# workflows.diy — full content > 1:1 AI implementation consulting. Build and deploy AI your org actually uses. > This file contains the full content of every page on workflows.diy, > concatenated in markdown, for direct LLM ingestion. > > Last generated: 2026-10-14T03:08:07.182Z > Canonical site: https://workflows.diy > Index: https://workflows.diy/llms.txt --- # AI Implementation Consulting Source: https://workflows.diy/ # Ship one AI workflow your team can own Work with me 1:1 to take one business process from a stalled pilot to working software in your stack. Evals and cost controls go in before rollout. [Start a brief](/#contact)[See pricing](/#pricing) A recent projectMiniFrames1:33, with sound[How I built it](/blog/miniframes-turns-a-web-page-into-a-video) [PlayPlay the MiniFrames showcase](/assets/miniframes-showcase-DT6MYxS4.mp4) MiniFrames turns a web page into a video with Chromium and FFmpeg. It makes no AI calls itself. Its companion tools made the narration in my cloned voice, plus the music, stills and clips, on my own computers. Leading an AI rollout? Read [AI for CEOs](/ai-for-ceos). Building it yourself? Browse the [33 workflow templates](/n8n-workflow-repository). ## How the work runs On a retainer, chat covers the questions you hit every day, and calls cover the decisions that need more time. ### Chat and calls Message me on Telegram when you are stuck on code, prompts, architecture or sequencing. I reply in your timezone. There is no ticket queue. Four standing 60-minute calls a month cover strategy, sequencing, technical review and deciding what to stop. Team coaching is part of Premium coaching. ### The DRIVE method - 1Define. Set the goals and map the current process. - 2Roadmap. Pick one measurable first release. - 3Implement. Build it with AI-assisted development. - 4Validate. Run the evals and measure the result. - 5Evolve. Roll it out, monitor it and revise it. [Read the full method](/ai-operations) ## About Cory Cory LePage, founder of workflows.diy I'm an AI-first software developer. For more than three years, every line of production code I touch has been written with AI coding agents, including Claude Code and Cursor. Before that, I spent ten years building across the stack. That background helps me catch incorrect assumptions, bad patterns and regressions in AI-generated code. Recent builds include MiniFrames, the video at the top of this page, and a Streamlit video clipper that I wrote about on the blog. ## Pricing Plain numbers, before any call. On every plan your team builds the workflow and I coach. On Premium I also work hands-on in the build. Open now ### One-off call $350 USD, one time A single stuck decision or direction check. Calls One 1-hour working session Who builds it Your team Terms No commitment [Start with this plan](/?plan=one-off#contact) Waitlist ### Retainers Monthly coaching$6,000 USD / month Premium coaching$18,000 USD / month Best for Strategy and technical work, month by month Coaching for your team and help inside the build Calls 4 standing calls a month Weekly calls Chat Unlimited Telegram chat Daily chat with prioritized responses Team coaching Not included Included Who builds it Your team Your team, with my hands‑on support Terms Month to month, cancel anytime On request [Join the waitlist](/?plan=monthly#contact) [Join the waitlist](/?plan=premium#contact) Every plan has the same refund. If you decide the work is not worth the price, tell me and I refund 100%. ## Recent writing - [October 13, 2026MiniFrames turns a web page into a video](/blog/miniframes-turns-a-web-page-into-a-video) - [April 20, 2026Shadow AI is already running in your business](/blog/unseen-ai-revolution-business-impact) - [June 15, 2025Building an AI video clipper in Streamlit](/blog/ai-youtube-video-clipper-streamlit) [All 36 posts](/blog) ## Questions Should I hire you yet? Maybe not. Most of what I know is free in the writing and the workflow repository, so start there if you are still defining the problem. Hire me when you have a specific problem and want 1:1 help with it. The work is direct, with no course or community attached. What kind of AI work do you help with? I map business processes and build n8n workflows and agentic systems. I connect tools through MCP and add evals and monitoring. Then I iterate from real usage. How do you help with AI strategy? I tie the roadmap to what can ship this quarter. I find the use cases with the most impact and choose the models and tools. I push as hard on what to stop as on what to build. Do you build the AI solutions for me? Your team builds it. I coach you and your team through the build and pair with you on the technical work. On Premium I also work hands-on in the build. The goal is a team that keeps shipping after the engagement ends. How fast can we start? One-off calls can usually be scheduled within a week. Monthly and premium retainers start with a short call to confirm the problem and the fit. ## Start a brief Three short answers are enough to start. I read every brief myself and reply within two business days. Before we work together, this form is the only way to reach me. --- # AI Implementation Consulting for CEOs Source: https://workflows.diy/ai-for-ceos # Fund the AI pilots that can reach production I work 1:1 with CEOs as a fractional Chief AI Officer. We decide which AI work gets the budget, and your team gets the winners into production. [Start a brief](/#contact)[See the five questions](#pilot-check) ## Ask these before a pilot gets more money A pilot that can't answer all five isn't ready for more money. Run them against the one you are funding now. - 1OwnerWho answers for the result? - 2BaselineWhat does the process cost and produce today? - 3Evaluation setWhich real cases show the output is right? - 4Cost modelWhat does one completed task cost? - 5Stop conditionWhat result ends the pilot? If an answer is missing, the next month goes to finding it. More build work can wait. ## A fractional CAIO keeps the decisions in one place AI work crosses business priorities, technical review, delivery, cost and risk. Split across separate advisers, those decisions come back to you to reconcile. As your fractional CAIO, I review each bet with the person who answers for its result. We look at the build, the evals, the cost per completed task and the rollout plan, and your internal leaders keep ownership. Along the way we decide which functions get autonomous agents, copilots or no AI at all, and which models you can swap without a rebuild. You also get enough context to answer the board's questions about cost and risk. The engagement tests the role before you hire for it. You see what a Chief AI Officer would own in your company, and whether the job needs a full-time person. ## Each function owns its own AI work A central AI lab can't run every workflow. My default design keeps a small central group for the platform, standards and governance. The people inside each function own their workflows and the results. I coach the leaders on both sides of that handoff. When the engagement ends, your team has the agents, prompts, evals and runbooks, so the work keeps shipping without me. ## Ways to start Roadmap sessions 1:1 working sessions that end with a short list of AI work tied to your objectives. Every item has an owner and a stop condition. Fractional CAIO A monthly retainer for oversight of the AI work, vendor and model decisions, governance, cost control and board updates on AI. Implementation coaching Your team builds, and I review agent boundaries, tool choices, MCP integrations and eval design as they go. Executive and board sessions Sessions that prepare your executive team and board to question AI spending and risk. Prices for calls and retainers are on the [home page](/#pricing). ## I still build with these tools every day I have used AI coding agents in production work for more than three years. That lets me review the business decision and the implementation behind it. You can check the work before you write. The [33 n8n templates](/n8n-workflows) are public, and the most-viewed has 113,137 views on n8n.io. The [MiniFrames build notes](/blog/miniframes-turns-a-web-page-into-a-video) cover a recent tool from its virtual clock to the finished video. The retainer runs month to month, and every plan carries a full refund if the work isn't worth the price. If I'm not earning the retainer, you end it. ## Bring the pilot you are deciding on Send the pilot, what is stuck and your plan. We run the five questions on it first, then decide what gets the budget and who owns it. [Start a brief](/#contact) --- # AI Operations and the DRIVE Method Source: https://workflows.diy/ai-operations # Map the process before you pick a model DRIVE is how I take one business process from a written map to a tested release your team runs. It starts with the process, and the model comes later. [Start a brief](/#contact)[Read the DRIVE method](#drive) ## A process is ready for AI when its owner can explain it Write down the inputs, decisions, tools, exceptions and acceptable output before choosing where AI belongs. That gives the build a target you can measure, and it shows which decisions need a person. Here is my [most-viewed n8n template](/n8n-workflows), mapped that way. A person decides at two points, and the AI drafts between them. - 1YouSubmit a topic. - 2AI agentWrites a post for each platform from SerpAPI search results. - 3GmailDelivers the drafts as a formatted email. Nothing continues until you approve them. - 4YouApprove again before anything is published. - 5n8nPosts the approved drafts and their images to Instagram, X, Facebook and LinkedIn. - 6Email and TelegramBring the results back to you. The first deliverable is a map like this one and an eval set. The software comes after. ## DRIVE takes one process from map to production - :not(h3)]:ml-8" > ### 1Define the process Interview the people who run it, map each step and record walkthroughs as they happen, so the judgment calls are kept. Done when the process and the exact output of the first release are written down. - :not(h3)]:ml-8" > ### 2Roadmap the first release Rank the candidate features by value and feasibility, then pick the smallest release that can prove or disprove the approach. Done when success and stop conditions are agreed. - :not(h3)]:ml-8" > ### 3Implement the smallest working slice Choose the simplest design that meets the acceptance criteria, whether that is one model call, an n8n workflow or an agent with MCP tools. Done when the slice runs end to end on real inputs. - :not(h3)]:ml-8" > ### 4Validate it against an eval set Run representative inputs and expected outputs on every change. Track wrong answers apart from format problems, because they need different fixes. Done when the release meets its acceptance criteria. - :not(h3)]:ml-8" > ### 5Evolve it in production Roll it out to a first group, train the team and watch quality and the cost per completed task. Widen the rollout only after that group meets the criteria. Done when the next change comes from production evidence. Your business and the models keep changing, so the cycle runs again. ## Every decision needs a name beside it Every implementation needs someone to choose the work, someone to build it and someone to judge whether the process now works. One person can hold more than one role, but each decision needs a named owner. RoleOwnsUsually held byWhere I fit ### AI Visionary Owns: Picks the business problem, sets the budget, names the owner, approves the target and stop condition, and removes organizational blockers. Usually held by: An executive such as the CEO, COO or responsible vice president. Where I fit: 1:1 planning and implementation review. See [AI for CEOs](/ai-for-ceos). ### AI Implementer Owns: Architecture, integrations, tools, deployment, monitoring and maintenance. Usually held by: Someone with a software engineering or IT background and context engineering, API integration and production review skills. Where I fit: On Premium I work hands-on in the build. On the other plans I guide your technical team or advise on the build. ### AI Operator Owns: The process specification, acceptance criteria, rollout and feedback loop. Usually held by: Someone in operations, product or program management. Where I fit: I help produce the specification and the eval set with the DRIVE method. The Implementer may direct AI coding agents, but remains accountable for the code and system behavior. When one person is both Implementer and Operator, write the two sets of acceptance criteria down separately. Technical completion and a working process are different tests. ## Saved time needs a destination A tested automated step can run more often without more people. Compute, review, exceptions and maintenance still cost money. The people in the process stay in charge of its decisions. Give their saved hours a named destination, such as reviewing exceptions or talking to customers. If nothing is removed or improved, the automation hasn't created value. ## Pick one process and name its owner Tell me which process you want to change and what is stuck. We will name its owner and agree a measurable result before any build starts. [Start a brief](/#contact) --- # AI-first Development Philosophy Source: https://workflows.diy/ai-first-philosophy # How I evaluate an AI-first developer Fundamentals still matter. What separates candidates now is how they direct a coding agent and check its work. ## AI-first means the developer stays accountable An AI-first developer uses coding agents across the whole lifecycle. The agent drafts code, tests and documentation. The developer supplies the context, reviews the output, runs the checks and decides what ships. My own workflow is AI-exclusive. Claude, Gemini and GPT plan, write, test and debug, and nothing is accepted because a model wrote it. Treat AI-generated code as untrusted until you can explain it, test it and watch it run. ## What I require A candidate missing any of these isn't ready for an AI-exclusive role, however strong the rest of the CV. Context They give the agent the files, constraints and examples a task needs, and they know when to remove context as well as add it. Decomposition They split a large problem into tasks an agent can finish and a reviewer can check, and they choose between one model call, one agent and several. Verification They treat output as untrusted, reproduce failures with logs and tests, and can say which check catches which mistake. Tooling They use at least one coding agent daily, such as Claude Code, Cursor, Windsurf, Cline, Aider or Copilot. They connect agents to tools through MCP, or a plain API call when that is simpler, and they check a model's tool advice instead of trusting its memory. Specification They write requirements and acceptance criteria an agent can build against, and they explain progress to people who don't read code. Fundamentals Data structures, web and backend basics, databases and the full software lifecycle. Without them, a developer can't judge what the agent produced. ## Run one real task in the interview The stack a candidate names matters less than how they work. Give them a small, real bug in an unfamiliar repository and the coding agent they prefer, then watch the session. Look at what they hand the agent before it starts, how they check its fix and what they do when it is wrong. Then ask them to explain the diff line by line. A candidate who ships a fix they can't explain has failed the task, even if the tests pass. ## What helps after that Hands-on experience in your stack and your industry shortens the ramp-up. So do test-driven and spec-driven habits, threat modeling for generated code, CI/CD and version control fluency. The judgment to use one strong agent where several would add only overhead also counts. None of this replaces the requirements above. ## Hiring or upskilling for AI-first work? I work 1:1 with developers and teams moving to an AI-first workflow. Tell me the role or the team, and we can scope the next step. [Start a brief](/#contact) --- # n8n Workflow Repository Source: https://workflows.diy/n8n-workflow-repository # The n8n workflow repository 33 public n8n workflows for AI and automation. Clone the repository or import any file. [Clone on GitHub↗](https://github.com/workflowsdiy/n8n-workflows)[Browse the list](#workflows) ## Every workflow in the repository Search workflows Matches file names and descriptions. Press / to jump here. Showing 33 of 33 workflows FileDescription - [Advanced AI Powered Document Parsing & Text Extraction with Llama Parse.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Advanced%20AI%20Powered%20Document%20Parsing%20%26%20Text%20Extraction%20with%20Llama%20Parse.json) Leverages Llama Parse and AI to parse documents (e.g., from Gmail attachments), extract text/structured data (like invoices), and save results to Google Drive/Sheets. - [AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI%20Agent%20Chatbot%20%2B%20LONG%20TERM%20Memory%20%2B%20Note%20Storage%20%2B%20Telegram.json) An AI agent chatbot with long-term memory and note-taking capabilities using Google Docs, interacting via Telegram. - [AI Agent Chatbot with Jina.ai Webpage Scraper.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI%20Agent%20Chatbot%20with%20Jina.ai%20Webpage%20Scraper.json) An AI chatbot equipped with a Jina.ai tool to scrape and answer questions based on real-time web content. - [AI Agent for n8n Creators Leaderboard - Find Popular Workflows.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI%20Agent%20for%20n8n%20Creators%20Leaderboard%20-%20Find%20Popular%20Workflows.json) Uses an AI agent to query and analyze n8n community leaderboard data (from GitHub) to find and report on popular workflows by specific creators. - [AI Agent for Top n8n Creators Leaderboard Reporting.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI%20Agent%20for%20Top%20n8n%20Creators%20Leaderboard%20Reporting.json) An AI agent that fetches data from the n8n community leaderboard and generates reports on top creators and their workflows, potentially with scheduled triggers. - [AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI%20Powered%20RAG%20Chatbot%20for%20Your%20Docs%20%2B%20Google%20Drive%20%2B%20Gemini%20%2B%20Qdrant.json) A Retrieval-Augmented Generation (RAG) chatbot that processes documents from Google Drive, stores them in Qdrant, and uses Google Gemini AI to answer questions based on the documents. - [AI-Powered YouTube Video Summarization & Analysis.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/AI-Powered%20YouTube%20Video%20Summarization%20%26%20Analysis.json) Automates the summarization and analysis of YouTube videos by fetching transcripts and using AI to generate insights. - [Analyze YouTube Video for Summaries, Transcripts & Content + Google Gemini AI.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Analyze%20YouTube%20Video%20for%20Summaries%2C%20Transcripts%20%26%20Content%20%2B%20Google%20Gemini%20AI.json) Utilizes Google Gemini AI to analyze YouTube videos, providing various outputs like summaries, transcripts, scene descriptions, or highlight clips based on user-selected prompt types. - [Automate Multi-Platform Social Media Content Creation with AI.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Automate%20Multi-Platform%20Social%20Media%20Content%20Creation%20with%20AI.json) An AI-driven content factory for generating tailored posts for multiple social media platforms (LinkedIn, Instagram, Facebook, X, TikTok, etc.), including image suggestions and an approval loop. - [Automated Social Media Content Publishing Factory + System Prompt Composition.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Automated%20Social%20Media%20Content%20Publishing%20Factory%20%2B%20System%20Prompt%20Composition.json) A highly advanced social media content factory that uses externally managed system prompts and schemas (from Google Docs) to dynamically generate and publish content across various platforms. - [Automated Workflow Backups to Google Drive.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Automated%20Workflow%20Backups%20to%20Google%20Drive.json) Automatically backs up all n8n workflows to a timestamped Google Drive folder and manages older backups. - [Build a Web Search Chatbot with GPT-4o and MCP Brave Search.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Build%20a%20Web%20Search%20Chatbot%20with%20GPT-4o%20and%20MCP%20Brave%20Search.json) Creates an AI chatbot using GPT-4o that can perform web searches via the MCP Brave Search tool to answer user queries. - [Compare Local Ollama Vision Models for Image Analysis using Google Docs.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Compare%20Local%20Ollama%20Vision%20Models%20for%20Image%20Analysis%20using%20Google%20Docs.json) Analyzes an image using multiple local Ollama vision models (e.g., Granite, Llama3.2-vision) and saves the comparative results to Google Docs. - [Confluence Page AI Chatbot Workflow.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Confluence%20Page%20AI%20Chatbot%20Workflow.json) An AI chatbot that fetches content from a specific Confluence page and answers user questions based on that content. - [DeepSeek AI Agent + Telegram + LONG TERM Memory.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/DeepSeek%20AI%20Agent%20%2B%20Telegram%20%2B%20LONG%20TERM%20Memory.json) An AI agent powered by DeepSeek with long-term memory capabilities (using Google Docs) interacting via Telegram. - [DeepSeek V3 Chat & R1 Reasoning Quick Start.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/DeepSeek%20V3%20Chat%20%26%20R1%20Reasoning%20Quick%20Start.json) A quick start guide demonstrating various methods to connect to and use DeepSeek V3 (chat) and R1 (reasoning) models, including local Ollama and direct API calls. - [Easy WordPress Content Creation from PDF Docs + Human in the Loop Gmail.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Easy%20WordPress%20Content%20Creation%20from%20PDF%20Docs%20%2B%20Human%20in%20the%20Loop%20Gmail.json) Extracts text from PDF documents, uses AI to generate blog posts, creates drafts in WordPress, and includes a Gmail-based human approval step before publishing. - [Empower Your AI Chatbot with Long-Term Memory and Dynamic Tool Routing.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Empower%20Your%20AI%20Chatbot%20with%20Long-Term%20Memory%20and%20Dynamic%20Tool%20Routing.json) An AI chatbot with long-term memory (via Google Docs) and a dynamic tool router that can save, retrieve, or send memories to other services like Gmail or Telegram. - [Essential Multipage Website Scraper with Jina.ai.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Essential%20Multipage%20Website%20Scraper%20with%20Jina.ai.json) Scrapes multiple pages of a website by first fetching its sitemap and then using Jina.ai to extract content from each listed URL. - [Generate SEO-Optimized WordPress Content with AI Powered Perplexity Research.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Generate%20SEO-Optimized%20WordPress%20Content%20with%20AI%20Powered%20Perplexity%20Research.json) Uses Perplexity API for research on a given topic, then leverages AI to generate SEO-optimized blog content and publish it to WordPress. - [Monitor Favorite YouTube Channels Through RSS feeds and Receive Notifications.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Monitor%20Favorite%20YouTube%20Channels%20Through%20RSS%20feeds%20and%20Receive%20Notifications.json) Monitors specified YouTube channels using their RSS feeds, fetches details of new videos, and sends notifications via Telegram and/or Gmail. - [Multi-AI Agent Chatbot for Postgres Supabase DB and QuickCharts + Tool Router.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Multi-AI%20Agent%20Chatbot%20for%20Postgres%20Supabase%20DB%20and%20QuickCharts%20%2B%20Tool%20Router.json) A multi-agent chatbot system where a primary agent routes tasks to secondary agents specializing in querying a Postgres/Supabase database or generating charts with QuickCharts. - [Nostr #damus AI Powered Reporting + Gmail + Telegram.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Nostr%20%23damus%20AI%20Powered%20Reporting%20%2B%20Gmail%20%2B%20Telegram.json) Fetches Nostr threads with the #damus hashtag, uses AI to analyze themes and generate reports, and sends them via Gmail and Telegram. - [PDF2Blog - Create Blog Post on Ghost CRM from PDF Document.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/PDF2Blog%20-%20Create%20Blog%20Post%20on%20Ghost%20CRM%20from%20PDF%20Document.json) Converts PDF documents into blog posts and publishes them to a Ghost CRM instance using AI for content generation. - [Perplexity Research to HTML AI-Powered Content Creation.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Perplexity%20Research%20to%20HTML%20AI-Powered%20Content%20Creation.json) Performs research on a topic using Perplexity API and then uses AI to generate a structured article, subsequently converting it into a styled HTML document. - [Private & Local Ollama Self-Hosted + Dynamic LLM Router.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Private%20%26%20Local%20Ollama%20Self-Hosted%20%2B%20Dynamic%20LLM%20Router.json) An AI assistant that uses a router agent to dynamically select the most appropriate locally hosted Ollama LLM (e.g., text, coding, vision models) based on the user's prompt. - [Private & Local Ollama Self-Hosted AI Assistant.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Private%20%26%20Local%20Ollama%20Self-Hosted%20AI%20Assistant.json) A simple AI assistant powered by a locally hosted Ollama LLM (e.g., Llama 3.2) for private chat interactions. - [Telegram Messaging Agent for Text Audio Images.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Telegram%20Messaging%20Agent%20for%20Text%20Audio%20Images.json) A Telegram bot that can receive and process text, audio (transcribing with OpenAI), and image (analyzing with OpenAI Vision) messages, with user validation. - [The Ultimate Free AI-Powered Researcher with Tavily Web Search & Extract.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/The%20Ultimate%20Free%20AI-Powered%20Researcher%20with%20Tavily%20Web%20Search%20%26%20Extract.json) Utilizes the Tavily API for AI-powered web search and content extraction to perform research on a given topic, optionally summarizing results with AI. - [Ultimate AI-Powered Chatbot for YouTube Summarization & Analysis.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Ultimate%20AI-Powered%20Chatbot%20for%20YouTube%20Summarization%20%26%20Analysis.json) An AI agent chatbot that retrieves YouTube video details and transcripts, then allows users to ask questions or request summaries/analyses of the video content. - [Use OpenAI to Transcribe Audio + Summarize with AI + Save to Google Drive.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Use%20OpenAI%20to%20Transcribe%20Audio%20%2B%20Summarize%20with%20AI%20%2B%20Save%20to%20Google%20Drive.json) Transcribes audio files (e.g., .m4a from Google Drive) using OpenAI, then uses AI to summarize the transcript into structured JSON and Markdown reports, saving all to Google Drive and notifying via Gmail/Telegram. - [Your First Wordpress + AI Content Creator - Quick Start.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/Your%20First%20Wordpress%20%2B%20AI%20Content%20Creator%20-%20Quick%20Start.json) A quick start guide to create and publish AI-generated blog posts to WordPress, including generating a title, content, and a featured image. - [YouTube Video Comment Analysis Agent.json](https://github.com/workflowsdiy/n8n-workflows/blob/main/n8n-workflows/YouTube%20Video%20Comment%20Analysis%20Agent.json) An AI agent that fetches YouTube video details and comments, then analyzes the comments to provide a comprehensive report including sentiment, common themes, and content opportunities. ## What the repository contains .json workflow files Ready-to-import templates covering AI document parsing, agentic chatbots, social media automation and local LLM integration. Aggregated raw JSON One file with the JSON for every workflow, for a large-context LLM to read. Titles and descriptions The searchable list on this page, mapping each file name to a short description. ## Learn the patterns with an LLM Give the aggregated JSON and the descriptions to any model with a large context window, such as Claude, Gemini or GPT. Then ask questions like these. - Explain common patterns for integrating local Ollama models across these workflows. - Walk me through the RAG chatbot workflow node by node. - Draft a new workflow JSON that combines two of these workflows. - What are common parameters for the HTTP Request node in these POST calls? - Generate a README draft from this workflow's JSON. `# Context I've attached: - 0. workflows.diy - n8n - public repo.md (aggregated JSON of all workflows) - 1. Workflow Titles and Descriptions.md # Task Based on the attached workflows, can you explain the common patterns used for integrating local Ollama models for private AI tasks? Reference examples like the "Private & Local Ollama Self-Hosted + Dynamic LLM Router". # Output Return a structured breakdown: 1. shared architectural patterns 2. node-level configuration deltas 3. one annotated example` An example prompt that uses the two files from the repository. ## Import a workflow - 1Open the `.json` file on GitHub. - 2Select and copy the JSON content. - 3In n8n, open an empty workflow or the workflows list. - 4Click the empty canvas and paste. ### Before you run it - Most workflows contain `PLACEHOLDER` values. Replace them with your own keys, URLs and IDs. - Configure credentials in n8n for services such as OpenAI, Google and Telegram. - Test the workflow before you rely on its output. ### What you need - An n8n instance, cloud or self-hosted. - Credentials for the services a workflow uses, such as OpenAI, Google Cloud, Telegram, WordPress or the Ollama API. - Optionally, n8n community nodes or npm packages (for example `youtube-transcript`) when a Code node imports them. - Familiarity with the underlying services. It helps when something breaks. These workflows are provided as is, for educational use, at your own risk. Watch API costs, rate limits and each provider's terms of service. ## Stuck after importing a template? Credentials, auth and edge cases are what a template leaves open. I can review the workflow and finish those parts for your team. [Start a brief](/#contact)[Creator profile](/n8n-workflows) --- # n8n AI Automation Workflows Source: https://workflows.diy/n8n-workflows # My public n8n workflows I help organizations put AI into their operations. These are the n8n templates I publish. [See the n8n.io profile↗](https://n8n.io/creators/joe/)[Workflow repository](/n8n-workflow-repository) ## How I use n8n By October 2026, the 33 workflows published since November 2024 had drawn more than 217,000 unique views and 38,000 imports on n8n.io. n8n is my main tool for AI automation. It runs the agents that call tools and the data flows around them. I connect it to frontier models (Claude, Gemini, OpenAI, local Ollama) and to MCP tools. AI end to end Workflows that embed AI for content generation, data analysis, RAG and full agentic loops, beyond single model calls. Real problems Each template started as a process that got stuck. They are built to ship. Open by default The repository is public. The patterns are documented. The aggregated JSON is yours to feed into any LLM. ## Most-viewed workflows Sorted by views on n8n.io. Each one is a working pattern you can clone and configure. ### [Automate Multi-Platform Social Media Content Creation with AI↗](https://n8n.io/workflows/3066-automate-multi-platform-social-media-content-creation-with-ai/) Writes platform-specific posts with GPT-4 or Gemini, sends drafts to Gmail for approval, then publishes them to X, LinkedIn, Instagram and Facebook. AI · Marketing113,137 views ### [AI-Powered YouTube Video Summarization & Analysis↗](https://n8n.io/workflows/2679-ai-powered-youtube-video-summarization-and-analysis/) Takes a YouTube URL through a webhook, extracts the transcript, and uses GPT-4o mini to return a structured summary of the main topics. AI · Marketing70,927 views ### [AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant↗](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/) Loads documents from a Google Drive folder into a Qdrant vector store, then answers chat questions with Gemini from the retrieved passages. AI53,107 views ### [AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram↗](https://n8n.io/workflows/2872-ai-agent-chatbot-long-term-memory-note-storage-telegram/) Chats with users over Telegram using GPT-4o mini, saving long-term memories and notes to Google Docs and recalling memories before each reply. AI46,525 views [Browse the featured workflows](/n8n-workflows/all) ## Stuck on the last 20% of a template? A template gets you about 80% of the way. I help with the integration, auth, edge cases and orchestration that usually stop a project. Send a brief and we can look at where yours stalled. [Start a brief](/#contact)[Browse the repository](/n8n-workflow-repository) --- # Featured n8n Workflow Templates Source: https://workflows.diy/n8n-workflows/all # Featured n8n workflows 32 featured workflows, with full descriptions, sorted by views on n8n.io. The full repository lists all 33. [Open the full repository](/n8n-workflow-repository)[n8n.io creator profile↗](https://n8n.io/creators/joe/) ## Browse the workflows Search featured workflows Matches titles, descriptions and tags. Press / to jump here. List Cards Showing 32 of 32 workflows ### [Automate Multi-Platform Social Media Content Creation with AI↗](https://n8n.io/workflows/3066-automate-multi-platform-social-media-content-creation-with-ai/) Writes platform-specific posts with GPT-4 or Gemini, sends drafts to Gmail for approval, then publishes them to X, LinkedIn, Instagram and Facebook. AI · Marketing113,137 views ### [AI-Powered YouTube Video Summarization & Analysis↗](https://n8n.io/workflows/2679-ai-powered-youtube-video-summarization-and-analysis/) Takes a YouTube URL through a webhook, extracts the transcript, and uses GPT-4o mini to return a structured summary of the main topics. AI · Marketing70,927 views ### [AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant↗](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/) Loads documents from a Google Drive folder into a Qdrant vector store, then answers chat questions with Gemini from the retrieved passages. AI53,107 views ### [AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram↗](https://n8n.io/workflows/2872-ai-agent-chatbot-long-term-memory-note-storage-telegram/) Chats with users over Telegram using GPT-4o mini, saving long-term memories and notes to Google Docs and recalling memories before each reply. AI46,525 views ### [Automated Social Media Content Publishing Factory + System Prompt Composition↗](https://n8n.io/workflows/3135-automated-social-media-content-publishing-factory-system-prompt-composition/) Takes a content idea from chat, writes posts for each social platform, creates images, emails the drafts for approval, then publishes the approved posts. Marketing43,819 views ### [Telegram Messaging Agent for Text/Audio/Images↗](https://n8n.io/workflows/2751-telegram-messaging-agent-for-textaudioimages/) A Telegram bot that routes each incoming message with GPT-4, transcribes voice notes and analyzes images. It checks the sender before processing. AI41,937 views ### [Private & Local Ollama Self-Hosted AI Assistant↗](https://n8n.io/workflows/2729-private-and-local-ollama-self-hosted-ai-assistant/) Chat messages go to a local Ollama model such as Llama 3.2, and the reply comes back as structured JSON. No cloud service is required. AI39,554 views ### [Generate SEO-Optimized WordPress Content with AI Powered Perplexity Research↗](https://n8n.io/workflows/3291-generate-seo-optimized-wordpress-content-with-ai-powered-perplexity-research/) A form query goes to Perplexity for research, then OpenAI drafts a WordPress post with SEO fields and a featured image. Telegram confirms when it is done. AI · Marketing35,244 views ### [DeepSeek V3 Chat & R1 Reasoning Quick Start↗](https://n8n.io/workflows/2777-deepseek-v3-chat-and-r1-reasoning-quick-start/) Shows how to call DeepSeek V3 and R1 from n8n, through the DeepSeek API or a local Ollama model, with a chat agent that has memory. Building Blocks · AI34,521 views ### [Perplexity Research to HTML: AI-Powered Content Creation↗](https://n8n.io/workflows/2682-perplexity-research-to-html-ai-powered-content-creation/) A webhook query goes to Perplexity for research, then GPT-4 turns the findings into an HTML blog post with Tailwind CSS styling. AI · Marketing33,024 views ### [Empower Your AI Chatbot with Long-Term Memory and Dynamic Tool Routing↗](https://n8n.io/workflows/3025-empower-your-ai-chatbot-with-long-term-memory-and-dynamic-tool-routing/) A chat agent with long-term memory in Google Docs routes each request to the right tool, such as saving memories or sending Gmail or Telegram alerts. Building Blocks · AI26,908 views ### [Build a Web Search Chatbot with GPT-4o and MCP Brave Search↗](https://n8n.io/workflows/3189-build-a-web-search-chatbot-with-gpt-4o-and-mcp-brave-search/) A chat message starts a GPT-4o agent that runs Brave Search through MCP tools and answers from the results. 21,273 views ### [The Ultimate Free AI-Powered Researcher with Tavily Web Search & Extract↗](https://n8n.io/workflows/2768-the-ultimate-free-ai-powered-researcher-with-tavily-web-search-and-extract/) A chat message sets a search topic, Tavily searches and extracts content from the top results, and OpenAI summarizes it in Markdown. 18,234 views ### [Ultimate AI-Powered Chatbot for YouTube Summarization & Analysis↗](https://n8n.io/workflows/2956-ultimate-ai-powered-chatbot-for-youtube-summarization-and-analysis/) Takes a YouTube video ID, fetches its details and transcript, then lets you chat with an AI agent about the video. AI · Marketing17,018 views ### [Use OpenAI to Transcribe Audio + Summarize with AI + Save to Google Drive↗](https://n8n.io/workflows/3076-use-openai-to-transcribe-audio-summarize-with-ai-save-to-google-drive/) Transcribes new.m4a files from Google Drive with OpenAI Whisper and saves a transcript and report to Google Drive. Email approval is optional. AI15,680 views ### [Advanced AI Powered Document Parsing & Text Extraction with Llama Parse↗](https://n8n.io/workflows/3005-advanced-ai-powered-document-parsing-and-text-extraction-with-llama-parse/) Takes documents from Gmail attachments or a webhook, extracts their text with LlamaParse, and saves the extracted data to Google Sheets. Building Blocks · AI13,857 views ### [Essential Multipage Website Scraper with Jina.ai↗](https://n8n.io/workflows/2957-essential-multipage-website-scraper-with-jinaai/) Reads a website sitemap, scrapes each page to Markdown with Jina.ai, and saves each page as its own Google Drive document. AI13,153 views ### [Your First Wordpress + AI Content Creator - Quick Start↗](https://n8n.io/workflows/2981-your-first-wordpress-ai-content-creator-quick-start/) A manual trigger turns a blog topic into a Grade 9 WordPress draft with a featured image, plus Grade 5 and Grade 2 rewrites. AI · Marketing10,741 views ### [Private & Local Ollama Self-Hosted + Dynamic LLM Router↗](https://n8n.io/workflows/3139-private-and-local-ollama-self-hosted-dynamic-llm-router/) Analyzes each prompt and sends it to the best local Ollama model, such as a code model for programming or a vision model for images. AI10,590 views ### [Multi-AI Agent Chatbot for Postgres/Supabase DB and QuickCharts + Tool Router↗](https://n8n.io/workflows/3090-multi-ai-agent-chatbot-for-postgressupabase-db-and-quickcharts-tool-router/) Chat questions in natural language run SQL against Postgres or Supabase, and results can be charted as QuickChart URLs. AI9,698 views ### [Confluence Page AI Chatbot Workflow↗](https://n8n.io/workflows/3012-confluence-page-ai-chatbot-workflow/) A chat question about a Confluence page fetches it by ID through the REST API, converts it to Markdown, and an AI agent answers. Engineering · Product · AI9,466 views ### [AI Agent Chatbot with Jina.ai Webpage Scraper↗](https://n8n.io/workflows/2943-ai-agent-chatbot-with-jinaai-webpage-scraper/) A chat message with a URL starts an agent that scrapes the page through Jina.ai, then answers with GPT-4o mini from its content. AI7,651 views ### [AI Agent for n8n Creators Leaderboard - Find Popular Workflows↗](https://n8n.io/workflows/2940-ai-agent-for-n8n-creators-leaderboard-find-popular-workflows/) A chat message names an n8n creator, and an AI agent writes a Markdown report from GitHub statistics files, saved locally. Other · AI5,875 views ### [PDF2Blog - Create Blog Post on Ghost CRM from PDF Document↗](https://n8n.io/workflows/2522-pdf2blog-create-blog-post-on-ghost-crm-from-pdf-document/) Uses AI to turn a PDF into a blog post for Ghost. The prompt sets the tone, such as professional or conversational. AI · Marketing5,674 views ### [Analyze YouTube Video for Summaries, Transcripts & Content + Google Gemini AI↗](https://n8n.io/workflows/3289-analyze-youtube-video-for-summaries-transcripts-and-content-google-gemini-ai/) Gemini analyzes a YouTube video and returns one chosen output, such as a summary or a transcript. The result is saved to Google Drive. AI4,943 views ### [Easy WordPress Content Creation from PDF Docs + Human in the Loop Gmail↗](https://n8n.io/workflows/3010-easy-wordpress-content-creation-from-pdf-docs-human-in-the-loop-gmail/) A PDF uploaded through a form becomes a WordPress draft with an AI image. Gmail sends the draft to a reviewer, and it publishes only after approval. AI · Marketing4,087 views ### [AI Agent for Top n8n Creators Leaderboard Reporting↗](https://n8n.io/workflows/2942-ai-agent-for-top-n8n-creators-leaderboard-reporting/) On a schedule, the workflow ranks top n8n creators and workflows from GitHub data, and an AI model writes a Markdown report. AI2,924 views ### [YouTube Video Comment Analysis Agent↗](https://n8n.io/workflows/2965-youtube-video-comment-analysis-agent/) Takes a YouTube video ID, fetches its details and comments, and writes a Markdown report on sentiment, recurring themes and keyword ideas. AI · Marketing2,843 views ### [Monitor Favorite YouTube Channels Through RSS feeds and Receive Notifications↗](https://n8n.io/workflows/3003-monitor-favorite-youtube-channels-through-rss-feeds-and-receive-notifications/) Checks RSS feeds for new uploads from chosen YouTube channels, then sends Telegram alerts and emails, per video or as a digest. AI · Marketing2,603 views ### [Compare Local Ollama Vision Models for Image Analysis using Google Docs↗](https://n8n.io/workflows/3185-compare-local-ollama-vision-models-for-image-analysis-using-google-docs/) Downloads an image from Google Drive, describes it with several local Ollama vision models, and saves the descriptions to a Google Doc. AI2,333 views ### [Automated Workflow Backups to Google Drive↗](https://n8n.io/workflows/2983-automated-workflow-backups-to-google-drive/) Each day, exports all n8n workflows as JSON into a dated Google Drive folder, deletes backup folders older than seven days, and sends a Telegram alert. Other2,184 views ### [#⃣Nostr #damus AI Powered Reporting + Gmail + Telegram↗](https://n8n.io/workflows/2946-nostr-damus-ai-powered-reporting-gmail-telegram/) Adds a Nostr community node to n8n that posts notes, reads events by criteria such as hashtags, and triggers workflows on mentions. AI1,512 views --- # Writing Source: https://workflows.diy/blog # Writing Notes from building software with AI coding agents. Each post covers one build and what broke along the way. ## Start here - For leaders [Shadow AI is already running in your business](/blog/unseen-ai-revolution-business-impact) Employees already run AI agents and tools outside IT governance, and the AI-use policies most companies wrote in 2024 don't cover them. - For builders [Making n8n workflows production-ready](/blog/n8n-production-playbook-security-retries-errors-version-control) A production n8n workflow needs header authentication on its webhooks, retries for temporary failures and a central error workflow. In our experience, a single retry resolves 60-70% of temporary API and LLM failures. - The latest build [MiniFrames turns a web page into a video](/blog/miniframes-turns-a-web-page-into-a-video) MiniFrames renders an HTML page to MP4 on a virtual clock and makes no AI calls. Its companion tools made the 93-second showcase on my own computers. ## 2026 - [Oct 13MiniFrames turns a web page into a video](/blog/miniframes-turns-a-web-page-into-a-video) - [Apr 20Shadow AI is already running in your business](/blog/unseen-ai-revolution-business-impact) ## 2025 - [Jun 15Building an AI video clipper in StreamlitWe turned a Jupyter notebook for AI video clipping into a Streamlit app, and the AI wrote the Python code from the module design we set. The modular app takes YouTube URLs or MP4 uploads and offers three transcription methods.](/blog/ai-youtube-video-clipper-streamlit) - [Jun 13Local PR Buddy reviews code before you pushLocal PR Buddy is a Python CLI that asks an LLM to review your staged or branch changes on your own machine, before you open a pull request.](/blog/local-pr-buddy-ai-code-insights-before-push) - [Jun 10Making n8n workflows production-ready](/blog/n8n-production-playbook-security-retries-errors-version-control) - [Jun 4code2prompt and Context7 for AI coding contextcode2prompt packs a codebase into Markdown for an LLM, and Context7 supplies current library docs. Both give Gemini in Google AI Studio targeted context for AI-first development.](/blog/code2prompt-vs-context7-ai-coding-context) - [Jun 3Turning the ai-sdlc CLI into an Electron GUIWe re-implemented the ai-sdlc Python CLI as a native SDLC module in our Electron and Vue 3 desktop app. The AI wrote the TypeScript and Vue code in under six hours, and the module still needs end-to-end testing before deeper integrations.](/blog/devflow-ui-sdlc-gui-rapid-build) - [Jun 3SEO audits with Crawl4AI, Python and an LLMA workflow that uses Crawl4AI to gather a site's pages, Python to clean them, and an LLM to write an SEO audit from an AI-written system instruction. It can flag gaps between a site's claimed expertise and its actual content.](/blog/hyper-efficient-seo-audits-ai-workflow) - [Jun 2Google Drive RAG chatbot workflow in n8nAn n8n community template indexes Google Drive documents in Qdrant and answers questions with Gemini. You have to set the Drive folder and the connections yourself.](/blog/spotlight-rag-chatbot-google-drive-gemini-qdrant) - [Jun 2Ten Ollama tips for running local AIAfter a model downloads, Ollama runs it on your own machine with no per-call cost and no internet connection.](/blog/top-10-ollama-tips-local-ai-power-user) - [Jun 1Six resources for vibe coding with AIVibe coding moves fast, so MCP directories, GitHub trending and rule directories are worth checking every week.](/blog/level-up-vibe-coding-6-essential-resources) - [May 31Running Ollama on NVIDIA GPUs for local AII run LLMs and vision models on an RTX 4090 and an RTX 4070 with Ollama, which keeps data on my machine and avoids API call costs. The same setup runs my Desktop Assistant and local n8n workflows.](/blog/nvidia-gpu-ollama-local-ai-powerhouse) - [May 29Using conversational AI as the new IDEFluid Dev is a workflow where most of the code comes from a chat with Google Gemini, and the IDE mainly runs and debugs it. AI-generated code still needs human testing and an understanding of the principles behind it.](/blog/fluid-dev-conversational-ai-ide) - [May 28Use AI as a hammer for throwaway scriptsMost small coding problems need one script, not a full project. For a one-off task, AI writes the script and the KISS principle says to skip the framework.](/blog/ai-hammer-kiss-throwaway-apps) - [May 27Gemini built an image reorder app in under an hourThe Image Reorder & Renumber app (ImageSortAndSave.com) was built by Google Gemini. It runs in the browser, lets you reorder and renumber images, and downloads the set as a ZIP.](/blog/gemini-builds-image-reorder-app) - [May 26Community tips and pitfalls for n8n workflowsn8n users on Reddit keep hitting the same problems, from PDFs with tables that plain text extraction cannot read to reusing data from earlier nodes.](/blog/n8n-unlocking-potential-community-tips) - [May 25AI workflows in Google Sheets with Apps ScriptGoogle Sheets and Apps Script can call OpenAI, Gemini, WordPress, and Mailchimp, and AI can write most of the script. You can build one even if you do not code.](/blog/google-sheets-apps-script-ai-workflows) - [May 24The 30+ tools in my AI development stackThe 30+ tools behind my AI applications and workflows run from local Ollama models on NVIDIA GPUs to services such as OpenRouter, Perplexity and n8n.](/blog/my-ai-development-power-stack) - [May 24How n8n ties together workflows, agents and MCPAI workflows follow fixed steps, while agents decide their own next step. Use a workflow when the steps are known and an agent when the number of steps is hard to predict. MCP connects either one to tools and data.](/blog/orchestrating-intelligence-workflows-agents-mcp-n8n) - [May 24Do million-token context windows replace RAG?Models with million-token context windows can hold a small knowledge base in one prompt, but RAG still matters once the knowledge base outgrows the window. Skip RAG for a few hundred pages, and use more advanced retrieval once the data is fragmented, tabular or spread across documents.](/blog/to-rag-or-not-to-rag-navigating-large-context-windows) - [May 24Nail the user story before you buildA clear user story saves rework on n8n workflows and AI-assisted builds, because it fixes the problem before the solution. The format names the beneficiary, the action and the value.](/blog/user-stories-foundation-for-efficient-development) - [May 23Choosing n8n by codability and integrabilityTwo tests separate AI automation tools: codability, meaning how much control the tool gives through code, and integrability, meaning how well it connects to your business systems.](/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first) - [May 23Using OpenRouter to switch between many LLMsOpenRouter.ai gives you one API for many LLMs, so you can swap models without rewriting integration code. To compare two models, send the same prompt to both through OpenRouter and see which answer fits the task better.](/blog/openrouter-ai-polyamory-mastering-your-llm-harem) - [May 22Building PlantDex with Vue 3, Supabase, and PiniaPlantDex is a plant cataloging app where Google Gemini generated nearly every line of code, built with Vue 3, Pinia, and Supabase. Gemini built it in four phases, starting with user accounts and plant data storage.](/blog/plantdex-mvp-journey-vue3-supabase-pinia-ai) - [May 21How Supabase runs the PlantDex backendSupabase gave PlantDex a database, user accounts, file storage and serverless functions without a custom backend. A backend-as-a-service supplies these parts pre-built, so a small team does not build and run its own server for them.](/blog/understanding-baas-supabase-plantdex-backend) - [May 1915 tips for AI-first development in AI StudioA detailed system instruction is the most impactful technique when you build with Gemini 2.5 Pro in Google AI Studio.](/blog/gemini-2-5-pro-ai-studio-power-tips-revised) - [May 18AI rebuilt this website in Vue 3Gemini 2.5 Pro rebuilt this website in Vue 3 from vanilla JavaScript. A detailed system prompt and specific task prompts guided it, and I validated the results.](/blog/ai-first-vue3-site-migration-flawless-execution) - [May 18A Tkinter GUI for selecting code2prompt filesSelecting a folder in this Tkinter app selects its contents too, and the app builds a minimal set of code2prompt --exclude arguments from your choices.](/blog/code2prompt-tkinter-helper-gui) - [May 18Our Jina.ai multipage scraper passes 10,000 n8n runsOur Essential Multipage Website Scraper with Jina.ai template has run more than 10,000 times in the n8n community. It reads a sitemap, pulls each page as clean Markdown with Jina.ai, and saves the results to Google Drive.](/blog/n8n-jinaai-multipage-scraper-10k-milestone) - [May 18My most visited n8n AI workflowsMy multi-platform social media content template leads my n8n templates with 38,157 Total Visitors on n8n.io, ahead of YouTube summarization at 21,447.](/blog/top-n8n-ai-automation-workflows-by-popularity) - [May 173D undersea world built with Three.js and Anime.jsA child's 2D undersea story grew into a 3D world built entirely in code. Three.js models the squid, fish, jellyfish and shark, and Anime.js animates them.](/blog/3d-undersea-world-threejs-animejs) - [May 16My first Quasar app was a "Hello World" adventureA first Quasar Framework project built with Vite and TypeScript, starting from a Hello World single-page app.](/blog/quasar-hello-world-adventure) - [May 15Crawl4AI RAG in my Electron AI assistantI added Crawl4AI to my Electron and Vue 3 assistant so it can answer from crawled websites. Playwright failed inside the FastAPI server on Windows, so the crawler moved into Docker.](/blog/crawl4ai-electron-rag-integration) - [May 14Migrating my vanilla JS site to Vue 3We moved a hand-built vanilla JavaScript site to a Vue 3 app built with Vite. The hardest part was turning static pages into components that Vue Router manages.](/blog/vanillajs-to-vue3-rewrite) - [May 13My desktop AI stack with Electron and OllamaWe built a desktop AI assistant with Electron, Vue 3, local Ollama models, a FastAPI backend and Docker, and an AI coding assistant wrote all of the code. Our job was to define the what and the why, and the generated code still needed thorough testing.](/blog/power-stack-desktop-ai-assistant) - [May 12The tech stack behind our desktop AI assistantOur desktop AI assistant combines Electron, Vue 3, FastAPI, Docker, Ollama and Kokoro TTS, with local models for privacy. Electron's main process handles operating system access, and FastAPI runs the Python AI services.](/blog/anatomy-desktop-ai-assistant-stack-features) --- # 3D undersea world built with Three.js and Anime.js Source: https://workflows.diy/blog/3d-undersea-world-threejs-animejs - Why: To turn a child's 2D undersea story into a 3D interactive scene, using Three.js for rendering and Anime.js for animation. - Challenge: Building distinct 3D creatures (squid, fish, jellyfish, shark) from Three.js geometry, coordinating idle and ambient animations, and debugging 3D orientation and interaction. - Outcome: A single-page web app with several animated sea creatures, each with its own behavior, rising bubbles, and hover and autonomous speech bubbles. - Learnings: Three.js builds shapes procedurally with LatheGeometry and TubeGeometry on custom curves. Anime.js tweens 3D object properties well. Modular JavaScript keeps a growing project manageable. - AI approach: My LLM assistant acted as a 3D modeling consultant, an animation adviser and a debugger. It helped turn 2D ideas into 3D models and worked through quaternion rotation bugs. - Models used: My LLM assistant (Google Gemini 2.5 Pro Preview 05-06) helped with every part of the project, and 100% of the code was written with its help. [ All writing ](/blog) May 17, 2025 # 3D undersea world built with Three.js and Anime.js A child's 2D undersea story grew into a 3D world built entirely in code. Three.js models the squid, fish, jellyfish and shark, and Anime.js animates them. The starting point was a child's 2D undersea story. It quickly grew into a fully 3D world. We used Three.js to model it and Anime.js to animate it, aiming for a lively, interactive single-page app. The child's original drawing that the 3D world grew from. ## The challenges We built a cast of distinct sea creatures entirely in code, using Three.js primitives: a squid called "Ing", several fish, jellyfish and a shark. Each one needed its own geometry: CapsuleGeometry, LatheGeometry for the fish and shark bodies, TubeGeometry on custom curves for tentacles and arms, and ExtrudeGeometry for fins. We also animated the creatures: - Tentacles and fins move continuously and subtly, and the jellyfish bells pulse. - Most creatures drift in random patterns, so they explore the 3D space. - The shark moved from a simple patrol to a "turn-and-swim" behavior. It smoothly turns toward a new random target before it swims. - Air bubbles spawn and rise, which adds to the underwater atmosphere. Getting the shark's fins right took a few tries. Managing animation states and keeping performance smooth with many animated entities were ongoing challenges. Splitting the JavaScript into one file per character and one per manager (scene, animation, interaction) became essential as the project grew. ## The outcome We now have a small 3D undersea world with these features: - A central squid ("Ing") with flowing arms and fins. - Multiple colorful fish, each with a more defined body from LatheGeometry. - Jellyfish that pulse and drift, with procedurally generated tentacles. - A shark ("Sharky") that cruises the scene with more natural turns. - Hover-triggered speech bubbles for most characters. - Autonomous, randomly timed speech bubbles for the shark. - A continuous stream of rising air bubbles. - Basic camera controls through Three.js's OrbitControls. The entire scene renders in real time, with all animations and behaviors managed by JavaScript. ## Key learnings - LatheGeometry and TubeGeometry (with custom THREE.Curve paths) create organic shapes without external model files. Local and world coordinates and object hierarchies matter for assembling and orienting parts. - Anime.js animates the position, rotation and scale of Three.js objects. That makes complex movement and idle behavior relatively straightforward to build. Its timelines are useful. - As features and characters were added, splitting the code into modules for scene setup, character creation (one per type), animation (split by concern) and interaction became essential. ES6 modules with an importmap managed dependencies without a bundler. - vector.project(camera) maps 3D world coordinates to screen coordinates. It is the standard way to place HTML and CSS elements, such as speech bubbles, over a Three.js scene. - Often the best approach to debugging 3D is to add THREE.AxesHelper to objects temporarily, simplify the animation and test step by step. Screenshots and videos also helped. - Cloning materials for each bubble's opacity, then scaling bubbles out with a shared material, showed the trade-off between visual detail and performance. Performance was not yet an issue. ## The AI approach My LLM collaborator suggested Three.js geometries and Anime.js techniques, helped debug the rotation logic and untangled module import errors. The work felt like pair programming. It also drafted this post. Next, we may add Matter.js for simple physics-based interactions, or build more complex narrative animations from Eliska's original story. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # AI rebuilt this website in Vue 3 Source: https://workflows.diy/blog/ai-first-vue3-site-migration-flawless-execution - Why: To show how an AI-first approach works when the AI delivers accurate solutions, guided by clear system-level instructions and human orchestration. - Challenge: Writing an effective system prompt was key. The next challenge was defining project scope and step-by-step requirements so the AI could execute almost perfectly. - Outcome: This Vue 3 website, built almost entirely from AI-generated code, shows what a well-defined AI persona and focused human validation can do. - Learnings: A well-crafted system prompt is essential for LLM collaboration. Precise task prompts let modern LLMs reach high accuracy, and the human role shifts to specification and validation. - AI approach: The LLM, working under a detailed system instruction I wrote, acted as a skilled developer. My role was to architect, write task prompts and validate its nearly perfect output. - Models used: This post details my work with my LLM assistant (Google Gemini 2.5 Pro Preview 05-06). The AI reached about 99% accuracy generating the code for this Vue 3 site, guided by a clear system instruction and my orchestration. [ All writing ](/blog) May 18, 2025 # AI rebuilt this website in Vue 3 Gemini 2.5 Pro rebuilt this website in Vue 3 from vanilla JavaScript. A detailed system prompt and specific task prompts guided it, and I validated the results. When I migrated this website from vanilla JavaScript to a Vue 3 SPA, the AI got most of the code right on the first pass. My role became orchestrator and validator. This project depended on the AI getting it right, or very nearly right, on the first pass. That only happened because I gave it proper instructions from the start. ## Giving the AI the lead developer role The goal was ambitious: turn an aging static site into a dynamic, component-based Vue 3 application with Tailwind CSS, TypeScript and a new blog. My directive to the AI was: "You are the developer. Take the existing content and structure, and rebuild it using these modern technologies. Provide the overall architecture, define the steps, write ALL the code and validate your work." The AI did not just assist. It took the lead on code generation. My workflow was: - Define a specific task, for example: "Create the Blog feature for this site following previous site guidelines. Start with a detailed step by step plan first, then provide the code in a systematic manageable way that I can implement and test step by step." - Receive the complete code block or blocks from the AI. - Copy them directly into my VS Code IDE. - Test and validate. Most of the time, the AI's output was spot-on. That success came from the system instruction I gave at the start. ## Setting the stage with a system prompt Before any specific tasks, I gave my LLM assistant a full system instruction. It sets the AI's persona, role, constraints, output preferences and operating guidelines for the whole project. Writing a good system prompt took upfront work, and that work kept the AI consistent. A good system prompt for a project like this typically includes: - A role definition, stating the AI's job, such as "Vue 3 Application Development Assistant." - A goal, the overall objective, such as "Help develop and debug a cross-platform desktop application." - Key constraints and preferences. For this project, they included these directives: Always provide complete code blocks. - Use clear start-of-file and end-of-file markers. - Retain existing context comments. - Use structured comments for major sections and simpler ones for sub-sections. - Prioritize secure Electron practices. This web project did not use Electron, but the practices set a quality standard. - Adhere to the specified technology stack (Vue 3 Composition API, TypeScript, Vite, Tailwind CSS). - A problem-solving approach, describing how the AI should act when debugging or facing ambiguity. - A tone and style, which is optional but can help guide how the AI communicates. The ground rules gave the AI a clear framework to work within. That led to more predictable, consistent and accurate output, and it reduced misunderstandings. ## Task prompts were the real challenge With a system prompt in place, the challenge moved to my task prompts. They had to be clear and complete. The AI turned those requirements into correct code. The few iterations we needed came from changing requirements or complex visual styling, not from the AI misreading its directives. ## The result is this website The Vue 3 application you are using now is the direct result of this collaboration. From the initial Vite setup to the final blog post styling, the AI produced the code within the parameters I set. My own coding was minimal. I mostly integrated the AI's code blocks and ran the build and development servers. ## Key learnings from a high-performing AI - A well-crafted system instruction matters most. It works like a job description and a company style guide for your AI developer. - Once the AI is set up, the quality of each task prompt determines how well its output works right away. - I act as orchestrator, validator and integrator. I design the structure, direct the AI, check that each section works and put the pieces together. - Development moved fast. Features were generated and validated quickly when the AI was consistently accurate. - Tactical coding took less mental effort. That freed attention for architecture, user experience and the next set of instructions. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Use AI as a hammer for throwaway scripts Source: https://workflows.diy/blog/ai-hammer-kiss-throwaway-apps - Why: To make the case for KISS when AI builds quick, throwaway apps that solve an immediate problem without the overhead of a full software project. - Challenge: Developers, new and experienced, often build simple tasks with large frameworks and architectures. The job is to notice when a small AI-written script is the right tool. - Outcome: Guidance for asking AI for single-file scripts (Python, HTML/JS) to solve small problems instead of building large projects. The goal is to solve the problem and move on. - Learnings: AI is also good at fast, targeted scripts, not only complex systems. Applying KISS with AI speeds up small, disposable tasks. The human defines the problem precisely and directs the AI. - AI approach: The AI, such as Gemini, writes the main code for simple single-file scripts from clear human direction. AI also helped outline and draft this post. - Models used: This post was drafted with my AI assistant (Google Gemini 2.5 Pro Preview 05-06). It covers using AI for quick, simple solutions. [ All writing ](/blog) May 28, 2025 # Use AI as a hammer for throwaway scripts Most small coding problems need one script, not a full project. For a one-off task, AI writes the script and the KISS principle says to skip the framework. ## Building a house when you need a hammer A simple problem is a nail. In code, it might be a data reformatting task, a one-off calculation, or pulling one value from a web page. The straightforward answer is a hammer: write a small script, run it, and move on. What I see more and more, in experienced developers and newcomers alike, is a plan to build a whole house. A quick script turns into a large React project or a multi-file FastAPI server, with directory structures, virtual environments and deployment pipelines. That is like buying land, drawing blueprints and hiring contractors to hang one picture. This is not a critique of solid software engineering. That work has its place. It is a call to notice when we overcomplicate things, especially when the goal is a quick fix for an immediate problem. ## Why KISS matters more with AI The "Keep It Simple, Stupid" (KISS) principle has guided design and engineering for decades. AI can build very complex systems, and it is also a good tool for following KISS. Simple solutions suit quick fixes for four reasons. - Simple solutions are faster to create, test and deploy. - They are easier to understand, for you and for anyone else, including your future self. - They need less setup, fewer dependencies and less mental load. - They keep your attention on the problem, not on framework details. When a small, well-defined problem needs a quick answer that you may use only once or a few times, follow KISS. ## AI as the hammer for simple scripts This is where AI, in my case Google Gemini, is useful in a way people often miss. We often discuss AI building complex applications, and it does that well, as my other posts show. Its value as a hammer for simple tasks is just as large. You might need a Python script that reads a CSV, filters some rows and writes a new CSV. You might need one HTML page with a little JavaScript for a calculation based on user input. Instead of coding either by hand or setting up a project, you can prompt an AI: "Write a single Python script that does X, Y, and Z." In my AI-first workflow, the AI is the main coder for these small tasks. My job is to define the problem precisely. The AI follows a short system instruction: "You are a concise script generator. Prioritize single-file solutions using only vanilla technologies unless a specific library is essential for a simple core function." It then delivers the script, which is often right on the first try or needs minor tweaks. ## The overengineering trap The urge to overengineer is strong. We are taught to build for scale, maintenance and change. Those are good goals, but they are not *always* the most important goals for *every* task. For a throwaway script that solves a one-off problem, do you need a carefully abstracted set of classes, a full test suite and a CI/CD pipeline? Probably not. Setting up that infrastructure is often far slower than the time the script saves, because the script has a short life or a narrow scope. AI helps you avoid this trap for the right problems. It gets you to a working "good enough" solution, and good enough is what the job needs. ## Examples of quick fixes - To clean up data, ask for "Generate a Python script to parse this log file format and extract all IP addresses." - To call a weather API, ask for "Write an HTML/JS page that takes a city name, calls this weather API, and displays the current temperature." - To count words, ask for "Create a Python script to read all .txt files in a folder, count word frequencies, and output the top 10." - To rename files, ask for "I need a script to rename files in a directory from 'IMG_1234.JPG' to 'Vacation_2025_001.jpg', sequentially." - To start a site, ask for "Give me a basic HTML/CSS/JS structure for a single-page portfolio with a header, gallery section, and footer." Then customize it. These tasks do not need a large framework. A single, well-commented script from AI can be enough. ## My AI-first method When I use this approach with my AI collaborator, I follow five steps. - Define the problem clearly. My prompt names the inputs, the processing and the expected output. Ambiguity is the enemy. - Set up the AI with a short system instruction. I often start with this one: "You are an expert at creating concise, single-file scripts. Prefer vanilla Python/JavaScript. Only suggest external libraries if they are absolutely essential and simplify the core task significantly. Provide the complete script." - The AI generates the script. - Run the script with sample data. If it is not quite right, give specific feedback. - Refine the script. For example: "That was close, but can you modify the script to handle cases where the input file is empty?" Or: "Please add error handling for API call failures." Keep each iteration focused on the simple core task. The goal is not a complex, evolving piece of software. The goal is a working tool for the job at hand, built quickly. ## When to use the AI hammer This approach is not for every project. It works best when: - The problem is well defined and small, and it needs a quick fix. - The solution will be used once, a few times, or for one narrow purpose. It is a "throwaway app". - Formal engineering practice, such as extensive testing, complex design patterns or a full framework setup, is overkill and would slow you down. - You want to skip the ceremony of a "proper" project for a simple task. - Someone with limited coding experience needs a problem solved. They can describe it to the AI. The next time you face a simple nail, ask whether you need a blueprint or the AI hammer. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Building an AI video clipper in Streamlit Source: https://workflows.diy/blog/ai-youtube-video-clipper-streamlit - Why: To turn a working Python Jupyter Notebook for AI-powered video clipping into a user-friendly, modular Streamlit web app that is easier to use and maintain. - Challenge: Refactoring a monolithic notebook into a service-oriented architecture (core, services, orchestrators, UI). Adding error handling, GPU use for local Whisper, three transcription paths (YouTube API, Local Whisper, OpenAI API), prompts that identify topics and extract segments within user-defined constraints, and FFMPEG clip generation inside Streamlit. - Outcome: A working Streamlit app, video-clipper-streamlit, that takes YouTube URLs or local MP4s, offers flexible transcription, identifies topics with AI, extracts segments by topic and duration, generates clips with FFMPEG, and shows a real-time processing log with downloadable results. The AI generated the refactored code and all the new code for the Streamlit app. - Learnings: AI like Gemini can handle complex refactoring and full-stack development when it gets clear architecture and iterative guidance. Modular design is key to managing AI-generated code. Careful FFMPEG path handling and explicit GPU device management are essential for local processing. Iterative prompt work is needed to get the right LLM output for topic identification and constrained segment extraction. The human role becomes architect, prompter and validator in an AI-first workflow. - AI approach: This project followed AI-first development. The AI collaborator (Gemini) generated 100% of the code for the new Streamlit application structure, including the Python modules for services, orchestration and core components and the Streamlit UI in app.py. I defined the architecture, gave the AI the logic from the original notebook as a specification, wrote prompts for each module, and tested and validated the output. - Models used: Google Gemini 2.5 Pro Preview, acting as the primary software developer, guided by a comprehensive system instruction and iterative architectural decisions from the human orchestrator. [ All writing ](/blog) June 15, 2025 # Building an AI video clipper in Streamlit We turned a Jupyter notebook for AI video clipping into a Streamlit app, and the AI wrote the Python code from the module design we set. The modular app takes YouTube URLs or MP4 uploads and offers three transcription methods. The first version of this clipper was a Jupyter notebook ([clipper.ipynb](https://github.com/workflowsdiy/video-clipper-streamlit) in my repository). It took a video, transcribed it and used Large Language Models (LLMs) to find and cut segments. It worked, but a notebook is not a friendly interface for a tool I wanted others to use. So I turned the notebook into a [fully interactive Streamlit web app](https://github.com/workflowsdiy/video-clipper-streamlit). My AI collaborator, Google Gemini 2.5 Pro Preview, did the refactoring and wrote the new code, guided by a comprehensive system instruction and my iterative architecture decisions. This was an exercise in my [AI-first development philosophy](/ai-first-philosophy), and it mirrors the rapid re-platforming I described when I [transformed a CLI tool into an Electron GUI](/blog/devflow-ui-sdlc-gui-rapid-build). ## The goal The goal was an app where users could: - Input a YouTube URL or upload a local MP4 file. - Choose a transcription method: YouTube's API, for speed with YouTube videos. - Local Whisper, for privacy and control, using a local GPU when one is available. This is similar to my work with [NVIDIA GPUs and Ollama for local AI](/blog/nvidia-gpu-ollama-local-ai-powerhouse). - OpenAI's Whisper API, for potentially the highest accuracy through the cloud. - Let an AI analyze the transcript to find key topics. - Have another AI extract video segments for each topic, within the duration limits the user sets. - Generate the clips with FFMPEG. - Download the snippets. This required moving beyond a linear script to a modular, service-oriented architecture. That pattern also suits more complex systems, such as my [Desktop AI Assistant](/blog/power-stack-desktop-ai-assistant). ## Refactoring the monolith into modules The core of this build was less about me writing code and more about me designing the system and prompting the AI to implement it. The process had four parts. - Define the new architecture. We decided on this structure: app.py: the Streamlit UI. - core/: Pydantic data models (models.py) and shared constants.py. - services/: distinct functionality (system, video, transcription, LLM, FFMPEG). - orchestrators/: pipeline logic (common_steps.py, youtube_pipeline.py, local_mp4_pipeline.py), similar to how [n8n orchestrates complex AI workflows](/blog/orchestrating-intelligence-workflows-agents-mcp-n8n). - utils.py: a thin facade to the orchestrators for app.py. My role was to define these boundaries and each module's responsibilities. The AI generated the Python code for each file from those specs and the logic in the original notebook. A clear plan matters, much like [nailing down user stories before development](/blog/user-stories-foundation-for-efficient-development). - Implement each service. For each service, I gave the AI the relevant snippets from the old notebook and described the required functions, inputs, outputs and error handling. For transcription_service.py, I outlined the three methods and prompted for each one, including the FFMPEG audio extraction step for the OpenAI API. - Build the orchestration layer. The orchestrator functions in utils.py, which call into orchestrators/, manage the end-to-end flow. They decide which services to call based on user input. Careful prompting ensured correct data handoff between services and proper error propagation. - Craft the Streamlit UI (app.py). With the backend modular, the AI built the interface. It includes the sidebar for user configuration, display areas for processing logs, GPU information and results, input handling that triggers the pipeline, and clip information with download buttons. My prompts focused on layout, widget types and session state management. Streamlit's ease of building UIs is a key part of [my AI development power stack](/blog/my-ai-development-power-stack). ## Key technical hurdles We hit several challenges during the build and solved them with the AI's help. - FFMPEG accessibility in Streamlit. The ffmpeg.exe bundled in the video-clipper-streamlit app directory had to be found reliably by subprocess calls. The fix lives in services/system_service.ensure_ffmpeg_is_accessible(). - Local Whisper on the GPU. Getting Local Whisper (via stable-whisper) to use the NVIDIA GPU correctly took work. The AI wrote debugging logs that pinpointed discrepancies, much like the detailed setup needed for [running Ollama with NVIDIA GPUs](/blog/nvidia-gpu-ollama-local-ai-powerhouse). - LLM prompt engineering for segment extraction. At first the LLM struggled with strict duration limits. Iterative refinement of the prompt in services/llm_service.py fixed it, much as [code2prompt or Context7](/blog/code2prompt-vs-context7-ai-coding-context) prompts need tuning to get the output you want. - Handling None returns in orchestration. Orchestrator functions had to handle potential None returns from services gracefully. - Python imports in a modular structure. Managing imports across core, services and orchestrators was detailed work, and the AI handled it well. ## The outcome is a working modular AI tool The result is the [video-clipper-streamlit](https://github.com/workflowsdiy/video-clipper-streamlit) app we have been working on. It now: - Accepts YouTube URLs or MP4 uploads. - Offers three transcription methods. - Uses LLMs to identify topics and then extract relevant segments. - Generates downloadable video clips. - Provides real-time feedback through a processing log. The modular structure is easier to maintain and extend than the original monolithic notebook. ## Learnings from an AI-first build - With clear architecture and precise prompting, LLMs can write most of the application code. This is the evolution of "Fluid Dev," where [conversational AI becomes the new IDE](/blog/fluid-dev-conversational-ai-ide). - Modularity matters, even for AI. Breaking problems into smaller modules helps both the human architect and the AI coder. - System instructions come first. A detailed system instruction up front is essential. I covered this principle in my [15 tips for AI-first development in AI Studio](/blog/gemini-2-5-pro-ai-studio-power-tips-revised). - The human role shifts. My main work was design, defining interfaces, prompting and validating. - Debugging is collaborative. Giving the AI errors and context helps it produce fixes. The ["AI hammer" approach](/blog/ai-hammer-kiss-throwaway-apps) suits trivial tasks. This project used AI to build a larger, more useful application. ## Next steps for the clipper - Further refining LLM prompts for more consistent segment extraction. - Adding more UI and UX polish, perhaps more granular progress indicators. - Extensive testing with a wider variety of video inputs. If you want help with AI-driven development or automation, [get in touch](/#contact). [ All writing ](/blog) --- # The tech stack behind our desktop AI assistant Source: https://workflows.diy/blog/anatomy-desktop-ai-assistant-stack-features - Why: To show how Electron, Vue 3, local Ollama for text and vision, local Kokoro TTS through FastAPI and Docker combine into a private, interactive desktop AI assistant. - Challenge: Orchestrating local AI models (Ollama for text and vision, Kokoro TTS) and services in one desktop app. Text, voice and image interactions all had to work together. Everything was AI-coded under human direction. - Outcome: A Desktop AI Assistant where the AI generated all of the code. It offers text chat, image understanding with local vision models, voice-to-text, local text-to-speech across features and a RAG system. - Learnings: Local AI with Ollama and Kokoro TTS improves user privacy and control. FastAPI works well for serving Python-based AI models. Electron and Vue give a good base for a multi-modal UI. Docker keeps complex dependencies under control. - AI approach: Google Gemini 2.5 Pro Preview was the only coder. It implemented all the local AI integrations (Ollama and Kokoro TTS through FastAPI), the multi-modal UI features and the backend RAG pipeline. The work followed our architectural guidance and detailed prompts. - Models used: This post describes the technology stack and feature set of our Desktop AI Assistant. Google Gemini 2.5 Pro Preview coded 100% of the application, which is local first and multi-modal. [ All writing ](/blog) May 12, 2025 # The tech stack behind our desktop AI assistant Our desktop AI assistant combines Electron, Vue 3, FastAPI, Docker, Ollama and Kokoro TTS, with local models for privacy. Electron's main process handles operating system access, and FastAPI runs the Python AI services. The Desktop AI Assistant combines local AI models, an Electron shell and FastAPI services in one app. In a previous post, we showed that Google Gemini 2.5 Pro Preview generated 100% of its code. This post covers the technology, the features and how the parts connect. We needed a stack that handled the user interface, real-time AI interaction, backend processing and resource-heavy tasks in isolation. It also had to bring AI models to the user's desktop, with local processing for privacy and control. ## Core technology stack Several key technologies make up the foundation. Gemini coded each of them. ### Desktop application shell and UI Category Technology/Tool Role & Purpose Shell Electron (with Electron Forge) Cross-platform desktop app creation and packaging. Frontend UI Vue 3 (Composition API, Composables) Reactive user interface development for multi-modal interactions. Frontend build Vite Development server and build tool for Vue. Language TypeScript Static typing for the entire codebase. Styling Tailwind CSS Utility-first CSS framework. Routing Vue Router SPA navigation within Electron. ### Local AI and backend services Category Technology/Tool Role & Purpose Local LLMs (Text & Vision) Ollama Server (External) Runs local language and vision models for chat, summarization and image analysis. Local text-to-speech Kokoro TTS (via FastAPI) Provides high-quality local speech synthesis across app features. Primary backend Python, FastAPI, Uvicorn Serves Kokoro TTS, orchestrates RAG and interfaces with AI libraries. Crawler service Docker, Python, FastAPI (minimal) Isolated web crawling with crawl4ai and Playwright for RAG data ingestion. ### Cloud AI, data handling, communication and storage Category Technology/Tool Role & Purpose Cloud transcription OpenAI Whisper API (External) Audio-to-text conversion (user-provided API key). Vector DB (RAG) ChromaDB Stores text embeddings for RAG. Embeddings (RAG) Sentence Transformers Generates embeddings for RAG. HTTP clients Axios (Electron), HTTPX (FastAPI), Node HTTP Inter-service and external API communication. App settings electron-store Persists user preferences for API keys and default models. Chat history Local filesystem (JSON) Stores chat conversations locally. ## Core features The stack supports these features: Feature area Key functionalities Core modalities and local AI LLM interaction Text chat: streaming, model selection, system prompt, history. Vision analysis: image upload or URL, text prompts for image queries, model status, explicit loading. Summarization: for transcripts and live sessions. Text, Image -> Text (Ollama local models), Text-to-Speech (Kokoro TTS for responses) Speech and audio processing Recording: one-off and continuous segmented. Transcription: OpenAI Whisper for speech-to-text. Text-to-speech: Kokoro TTS for speaking assistant messages, vision descriptions and dedicated TTS testing. Voice and speed selection. Voice -> Text (Whisper), Text -> Voice (local Kokoro TTS via FastAPI) Live session Continuous audio recording, real-time Whisper transcription, progressive Ollama re-summarization of the full transcript, live UI updates, performance stats. Session persistence and AI-generated titles. Voice -> Text -> Summarized Text (Whisper, Ollama local models) Retrieval-augmented generation (RAG) Web data ingestion (via Dockerized crawl4ai), collection management, chunking, embedding (Sentence Transformers), ChromaDB storage, natural language querying against custom knowledge, and display of contextual answers and retrieved sources. Text (web content) -> Structured knowledge -> Text query -> Text answer (Ollama local models for RAG answers) Application settings Configuration for OpenAI API key, default Ollama chat model, default Kokoro TTS voice and speed. User preferences (electron-store) Local Kokoro TTS runs across the app. The assistant can voice an LLM chat response or a vision model's description of an image, which makes interactions more natural and accessible. Local Ollama vision models analyze images on the user's machine, which fits our local-first design. ## Key integrations and architectural patterns The architecture connects these technologies in five ways: - Electron's multi-process model separates the UI (renderer) from backend tasks and native interactions (main process). Secure IPC through contextBridge connects them. - Modular services run through the whole app, from Electron's main process services and preload APIs to FastAPI's routers and the rag_core business logic. Modularity was a core instruction to Gemini, and it was key to managing the system. - FastAPI is the Python AI hub. It exposes Kokoro TTS as an API and orchestrates the RAG pipeline, including the Dockerized crawler. Heavy Python dependencies stay out of Electron's main process. - A hidden renderer captures audio with standard Web APIs. That audio feeds Whisper transcription and possible future local audio processing. - Docker keeps the crawler stable. The crawl4ai and Playwright setup is critical for RAG data ingestion, and it runs in a predictable container, which avoids platform-specific problems. ## Local computer control and automation The main advantage of a desktop AI assistant is that it can interact with the user's local computer. Web-based cloud apps cannot do this because of browser sandboxing and security restrictions. Electron's main process can call Node.js APIs, which reach the operating system, the file system and other local applications. A local LLM that understands natural language and generates structured output, such as scripts or command sequences, makes many tasks possible: - For automated tasks, a user could say: "Organize all my screenshots from the last week into a new folder named 'May Week 3 Shots' and then open that folder." The assistant parses the request, uses Electron's main process to work with the file system and runs the commands. - For application control, a user could say: "Open my code editor, launch the 'PM Desktop App' project, and start the development server." This is complex, but an LLM could generate the shell commands, and Electron's main process could run them. - A locally controlled headless browser could handle tasks that need browser interaction but are not web scraping. Playwright, run by Electron's main process or a local utility script, could work with local network devices that have web UIs, or with internal company portals that are not public. The Dockerized crawler shows what headless browsers can do, and bringing that control local and secure opens new options. - For content and files, a user could say: "Draft an email to John about our meeting, save it as 'meeting_notes.txt' in my Documents, and then open it for review." The LLM writes the text, and Electron creates and opens the file. Security comes first. Electron separates the renderer (UI) from the main process (Node.js and OS access), and that separation is the basis for this work. Local control features need careful design: - All OS-level interactions happen only in the Electron main process. - The sandboxed renderer (Vue UI) sends high-level, validated commands to the main process over IPC. - The main process sanitizes and runs these commands, possibly with user confirmation for sensitive actions. - Local LLMs (Ollama) handle the intent understanding too, so the core control logic has fewer external dependencies. This deeper integration with the local computer, powered by private local LLMs, is a step toward a personal AI assistant that understands your context from your own machine, not only from the web. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # A Tkinter GUI for selecting code2prompt files Source: https://workflows.diy/blog/code2prompt-tkinter-helper-gui - Why: To build a desktop utility that makes it easier to generate targeted prompts from large codebases with the code2prompt CLI. - Challenge: Building a file and folder tree selection in Tkinter, managing selection state recursively, and building code2prompt commands with dynamic exclude patterns. - Outcome: A Tkinter app that browses a project, includes or excludes files and folders, sets code2prompt options and runs the command from one window. - Learnings: ttk.Treeview handles hierarchical data well. Keeping selection state in a separate dictionary makes recursive toggling manageable. subprocess.Popen can run a CLI tool and stream its output into a GUI. - AI approach: The LLM acted as a Tkinter consultant and Python debugger. It helped structure the layout, event handling, file scanning and subprocess troubleshooting. - Models used: My LLM assistant (Google Gemini 2.5 Pro Preview 05-06) helped iterate on the GUI design and Tkinter implementation. 100% of all code was written with its help. [ All writing ](/blog) May 18, 2025 # A Tkinter GUI for selecting code2prompt files Selecting a folder in this Tkinter app selects its contents too, and the app builds a minimal set of code2prompt --exclude arguments from your choices. ## Why I built it The code2prompt CLI generates context-rich prompts from codebases. My "Electron/Vue3/Ollama Multi-Modal AI Assistant" project has tens of thousands of files once dev dependencies and backend services are counted. Writing --exclude patterns by hand for that is tedious and error-prone. I wanted a visual way to choose exactly which files and folders go into the prompt. The helper in one window: choose a profile and folder, toggle files, set options and run code2prompt. ## The challenges The GUI had to do five things: - Scan a project directory and show its structure as a tree. - Let users select or deselect a folder and its contents, or a single file. - Provide inputs for common code2prompt command-line options. - Build the code2prompt command with the right --exclude arguments from those selections. - Run the command and show its output in the GUI. I first considered PySimpleGUI. Its Tree element has no direct per-node checkbox control, and updating selections on large trees was hard. I chose Python's built-in Tkinter and its themed ttk widgets instead. That takes more boilerplate, but it gives finer control over the treeview and item states. The hard parts were recursive selection toggling for folders and keeping the generated exclude paths minimal and correct. ## What it does The code2prompt_tkinter_helper.py script is a desktop app with these features: - A project folder browser. - An interactive file and folder tree. Clicking an item toggles its selection, along with its children if it is a folder. A "[X]" or "[ ]" prefix shows the state. - "Select All" and "Deselect All" buttons. - A section for code2prompt options, such as output file, template, token counting and line numbers. - A "Generate & Run code2prompt" button that builds and runs the CLI command. - A text area that shows the generated command and the live STDOUT and STDERR from code2prompt. - A scan filter that skips common large directories such as node_modules, .git and venv, which speeds up processing for typical software projects. The tool turns GUI selections into a precise set of --exclude arguments. That makes it easier to control what goes into the code2prompt context window. ## Key learnings - ttk.Treeview handles hierarchical data well. Mapping item IDs (iid) to custom data objects, such as my FileSystemItem class, is essential for managing state. Updating item text, such as the selection status, gives visual feedback. - Recursive functions that toggle selections or walk the tree are fundamental for folder hierarchies. - A separate dictionary (tree_items_map) that holds each item's true selection state, apart from the visual tree, worked well. - subprocess.Popen runs external commands and captures their output. Streaming with iter(process.stdout.readline, '') feeds the output into the GUI and feels more responsive. Blocking calls still need careful handling. - When a parent folder is deselected, its children need no separate exclude entries. get_selected_and_excluded_paths builds this minimal set of exclude patterns. ## The AI approach My LLM assistant was a patient partner. It helped brainstorm Tkinter layouts, write event handlers, debug ttk.Treeview item updates and refine the logic that builds the subprocess command. It also drafted the first README for the helper. ## Results The helper saves me time and reduces errors when I prepare large codebases for code2prompt. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # code2prompt and Context7 for AI coding context Source: https://workflows.diy/blog/code2prompt-vs-context7-ai-coding-context - Why: To explain the distinct and complementary roles of code2prompt (for providing context from any codebase) and Context7 (for up-to-date external library documentation) in improving AI-assisted development workflows, particularly when using Google AI Studio. - Challenge: Stating clearly how code2prompt and Context7 differ, and showing developers when to use each one to give an LLM the right context for a task, especially in AI-first development. - Outcome: A guide that separates code2prompt from Context7 and shows the strengths and ideal use case of each. code2prompt turns any codebase into LLM-readable Markdown for analysis and changes, while Context7 supplies current external library and API knowledge, which helps AI-driven development produce accurate, efficient code. - Learnings: code2prompt prepares any existing codebase, your own or a cloned one, as rich Markdown context for LLMs. That enables tasks such as understanding, refactoring and re-platforming. Context7 helps LLMs use external libraries and APIs correctly with the latest information. Together they are a core part of an AI-first development strategy, giving AI partners like Gemini targeted context. - AI approach: This post was refined through discussion with Google Gemini. The strategies it describes, such as using code2prompt to give Gemini context for the 'ai-sdlc' re-platforming, follow an AI-first method in which humans orchestrate AI partners, with code2prompt and Context7 as the context bridge. - Models used: Google Gemini 2.5 Pro Preview (as used in Google AI Studio for development and planning, and for refining this blog post). [ All writing ](/blog) June 4, 2025 # code2prompt and Context7 for AI coding context code2prompt packs a codebase into Markdown for an LLM, and Context7 supplies current library docs. Both give Gemini in Google AI Studio targeted context for AI-first development. Google AI Studio is my main development environment. Two tools give Gemini the context it needs in my AI-first workflow: [code2prompt](https://code2prompt.dev/) and [Context7](https://context7.com/). Precise, relevant context matters as much as the model. Both tools ground an LLM in real information instead of what it remembers from training. In my project [Turning the ai-sdlc CLI into an Electron GUI](/blog/devflow-ui-sdlc-gui-rapid-build), code2prompt handled the planning phase. I converted the whole original ai-sdlc Python CLI repository into one Markdown file, and I did the same for the Electron desktop app that would host the new GUI. With both codebases in context, Gemini got grounded in them before we planned how to add ai-sdlc as a GUI module. Detailed, accurate context turns a general assistant into a specialized development partner. ## code2prompt for codebase context Use code2prompt when an LLM must understand, refactor or build on an existing codebase. That codebase can be your own project or a repository you cloned from GitHub. Feeding the model the whole raw project is usually inefficient, because LLMs get overwhelmed and lose focus. code2prompt extracts, filters and formats the relevant code from any selected codebase into structured Markdown prompts. In the ai-sdlc project, it turned the public Python CLI repository into the specification that Gemini used to re-implement the tool as an Electron and Vue 3 GUI. I also built a [Tkinter GUI helper for code2prompt](/blog/code2prompt-tkinter-helper-gui) to manage the process on larger applications, such as my [Desktop AI Assistant](/blog/power-stack-desktop-ai-assistant). code2prompt follows the KISS principle, Keep It Simple, Stupid, which I also apply to [throwaway scripts](/blog/ai-hammer-kiss-throwaway-apps). The aim is the least possible context with the best possible quality. The approach is deterministic, which gives you a controlled way to feed information to an LLM. Use code2prompt for these tasks: - Generating documentation and docstrings for any codebase. - Finding and fixing bugs in an existing codebase. - Refactoring modules or functions. - Writing tests that fit a project's structure and logic. - Learning a new technology by reading how an existing codebase uses it. - Re-platforming or adding features to an application written by someone else, as in the ai-sdlc migration. code2prompt helps with two common LLM problems. - It reduces hallucinations. The model works from the repository's real code and is less likely to invent functions, arguments or variables. - It lowers token costs and can improve performance. Filtering out irrelevant code shrinks the prompt, which saves money and often improves answers. The [15 tips for AI-first development in AI Studio](/blog/gemini-2-5-pro-ai-studio-power-tips-revised) cover the same goal of using the context window well. code2prompt has three integration methods. - CLI, for terminal use and quick, one-off context from any code directory. - Python SDK, for custom scripts and automated workflows across codebases. - MCP server, where AI agents request context from a repository as a tool. It supports glob patterns (--include and --exclude) for precise file selection. Its core library also keeps state, so an agent can add or remove files as a task evolves. ## Context7 for up-to-date library knowledge Ask an LLM to build a feature with a third-party library such as Next.js, Supabase or a Python package, and it may return outdated code. Models trained up to a cutoff date often invent API calls for newer versions. Context7 supplies current, version-specific documentation taken from the original sources. Its documentation comes from automated scraping and community contributions, and you can refresh it to keep it current. The docs are split into focused snippets with many examples. Examples are one of the most effective ways to help a model write reliable code for external tools. Context7 covers reportedly around 1,900 tools and frameworks. Context7 is mainly an MCP server, built for AI coding assistants and agents. It exposes two tools: - resolve-library-id turns a library name, such as Supabase, into a Context7-compatible ID. It takes a libraryName parameter. - get-library-docs fetches documentation for a library ID. It performs retrieval-augmented generation (RAG) over the curated docs. It takes a context7CompatibleLibraryID parameter, plus an optional topic, such as "authentication", and an optional tokens limit that controls the context length. Agents use these tools for targeted lookups. They pull current snippets into their answers, which cuts hallucinated library usage. ## The core difference is the source material The difference is where the context comes from. code2prompt reads any codebase you point it at, whether it is yours or a cloned repository. Context7 reads external library and framework documentation. They solve different problems. code2prompt helps the LLM understand a specific codebase. Context7 helps it use external tools and libraries correctly. ## Side-by-side comparison Feature / Aspect code2prompt Context7 Primary source of context Any selected codebase (your own, cloned repositories, etc.) External library and framework documentation Main purpose Help LLMs work on or understand a specific codebase (document, refactor, test, fix bugs, learn its structure, re-platform, add features) Help LLMs understand how to use external tools, libraries and APIs correctly, with up-to-date information Key LLM limitations addressed Hallucinations (related to the provided codebase), high token costs, limited context size and performance on large codebases Hallucinations (outdated APIs and examples from external libraries), reliance on outdated or generic information How context is provided Extracts, filters and formats code from the selected codebase into Markdown. Uses glob patterns and stateful context. Pulls documentation from the source. Curates it into structured snippets with many examples. Supports RAG through dedicated tools. Key integration methods CLI, Python SDK, MCP server Primarily an MCP server, with the tools resolve-library-id and get-library-docs Documentation freshness Provides the state of the selected codebase at the time of extraction. Pulls from original sources, allows user refresh and takes community contributions. Relationship Complementary to Context7. Provides local or internal context for a specified codebase. Complementary to code2prompt. Provides external library and framework context. ## MCP and agentic AI Both tools are part of Software 3.0, where LLMs act as agents that invoke external tools and resources. The [Model Context Protocol (MCP)](https://www.anthropic.com/news/model-context-protocol) standardizes that, so agents can request context when they need it. I covered this in [How n8n ties together workflows, agents and MCP](/blog/orchestrating-intelligence-workflows-agents-mcp-n8n). - code2prompt works with MCP through its server mode. Agents treat any specified codebase as an interactive tool, and its stateful context suits tasks that change as they run. - Context7 is an MCP server at its core. Its tools let agents run RAG over its documentation. With MCP, an agent can decide when to query code2prompt for a codebase and when to query Context7 for a library's latest usage. That makes its problem solving more dynamic. ## Choosing a tool for the task The choice depends on the task. The two tools are slightly different but potentially complementary. Choose code2prompt when: - The LLM needs to understand, change or build on code from a specific codebase, yours or one you obtained. You want it to debug, document or test files from a particular repository. - You need a focused, filtered Markdown context of a codebase. - *Example:* "Refactor the handlePayment function in the Python codebase context (generated by code2prompt from project_X/services/billing.py) to improve error handling and logging." - *Example (re-platforming):* "Analyze this Markdown context of the ai-sdlc Python CLI tool (generated by code2prompt from its GitHub repo) and develop a plan to re-implement its core features as an Electron/Vue 3 application." This is the task in [Turning the ai-sdlc CLI into an Electron GUI](/blog/devflow-ui-sdlc-gui-rapid-build). Choose Context7 when: - The LLM needs to understand how to use an external library, framework or API. You ask it to write code that integrates a third-party tool. - It needs current syntax or examples for a specific package version. - *Example:* "Show me how to implement OAuth 2.0 authentication in my Vue 3 application using the latest Supabase JavaScript client library." Context7 supplies the current Supabase documentation. Use both when: - An agent works on a task that needs a specific local codebase and external libraries. It fetches project context through code2prompt's MCP server, then gets library documentation through Context7's MCP tools. - *Example:* an agent adds a weather API to my [PlantDex MVP](/blog/plantdex-mvp-journey-vue3-supabase-pinia-ai), a Vue 3 and Supabase app, to make plant care recommendations. It would use: code2prompt, to understand the existing plantStore.ts (Pinia store) and PlantDetailPage.vue component structure. - Context7, for the latest documentation and usage examples of the weather API, such as Open-Meteo. Guided by my [AI-first development principles](https://www.workflows.diy/ai-first-philosophy), the agent would then generate the Vue 3 component changes and the Supabase logic that calls the new weather API. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Crawl4AI RAG in my Electron AI assistant Source: https://workflows.diy/blog/crawl4ai-electron-rag-integration - Why: To add website, sitemap and text file ingestion to my Electron AI assistant, so it can run RAG queries against a custom knowledge base instead of only its pre-trained models. - Challenge: Integrating the Python Crawl4AI library (with its Playwright dependency) into a FastAPI backend. The hard part was Playwright's asyncio and subprocess issues on Windows. The pipeline runs from Electron to the main FastAPI server, to a Dockerized crawler, back to FastAPI for RAG, and then to Electron. - Outcome: A functional RAG backend. The Electron app can trigger ingestion (crawling in a Dockerized Crawl4AI service, chunking and vectorization into ChromaDB) and query the knowledge base, all managed by the FastAPI server. - Learnings: Docker isolates problematic dependencies like Playwright on Windows. FastAPI APIRouters keep a growing backend organized. Multiprocessing can handle tasks with conflicting asyncio loop requirements. Clear API contracts between services are essential. - AI approach: The LLM acted as system architect, Python and FastAPI developer, Docker consultant and debugger. It outlined the multi-stage backend, drafted Pydantic models for API communication, and proposed solutions for Playwright on Windows inside FastAPI, which led to the Dockerized worker strategy. - Models used: My LLM assistant (Google Gemini 2.5 Pro Preview 05-06) helped plan the architecture, refactor Python code for the FastAPI backend and debug the Docker and Playwright integration. It also drafted the initial Dockerfiles and FastAPI endpoint structures. [ All writing ](/blog) May 15, 2025 # Crawl4AI RAG in my Electron AI assistant I added Crawl4AI to my Electron and Vue 3 assistant so it can answer from crawled websites. Playwright failed inside the FastAPI server on Windows, so the crawler moved into Docker. My "Desktop AI Assistant," an Electron and Vue 3 app, already handled Ollama, Kokoro TTS and Whisper. Its knowledge was limited to the pre-trained models it used. The next step was to let it learn from custom sources, such as websites, sitemaps or local text files, and run Retrieval Augmented Generation (RAG) against that knowledge. This is where the Crawl4AI library came in. ## The challenges The goal was to integrate Crawl4AI's Python crawling and processing into my existing FastAPI backend, which already served Kokoro TTS. Three hurdles stood out. - Playwright and asyncio on Windows. Crawl4AI uses Playwright for browser automation. Running Playwright inside asyncio, as FastAPI does with Uvicorn, failed on Windows with a persistent NotImplementedError from asyncio's subprocess creation. We tried global event loop policies and separate threads. We also tried separate processes via multiprocessing, but the issue remained in the main FastAPI process tree. - Architectural complexity. The pipeline runs from the Electron app to the main FastAPI server, to a specialized crawler service, back to the main FastAPI server for chunking, embedding and RAG, and then to the Electron app. - Backend modularity. The new RAG logic had to stay organized, with clear separation between API routing, orchestration and core services such as ChromaDB, chunking and LLM interaction for RAG. ## The outcome We built the RAG backend and frontend. The fix for the Playwright issue was to Dockerize the crawling component. - Dockerized crawler service. A separate, minimal FastAPI service runs in a Docker container (`crawl_service_docker`). It houses Crawl4AI and its Playwright dependency in a stable Linux environment, which bypasses the Windows asyncio issues. It exposes a simple `/do_crawl` endpoint. - Main FastAPI server (`fastapi_server`). It is refactored into modular APIRouters for TTS and the new RAG features. The RAG ingestion endpoint (`/rag/ingest`) calls the Dockerized crawler over HTTP with httpx to fetch web content. - The main server's `ingestion_orchestrator.py` handles the scraped Markdown. It runs chunking (`chunker_service.py`) and metadata extraction (`metadata_service.py`), and stores the data in a local ChromaDB instance managed by `chroma_service.py`. - A RAG query endpoint (`/rag/query`) uses `retrieval_service.py` to fetch relevant context from ChromaDB. `answer_generation_service.py` formulates the answer with a configured LLM, which currently defaults to local Ollama. - The backend ingests data from URLs and sitemaps, and it answers queries based on that data. The next phase built the "Crawl & RAG" page in the Electron and Vue 3 app, which gives these backend capabilities a user interface. ## Key learnings - Docker isolates problematic dependencies. When a library has deep environmental conflicts, such as Playwright with asyncio on Windows, Docker runs it in a more compatible environment, such as Linux. - Treat the crawler as a microservice. Even when it runs locally in Docker, a separate service simplified the main FastAPI app and decoupled the problematic dependency. - APIRouters are essential for a growing FastAPI app. They split endpoints into logical modules. - Multiprocessing helps with long tasks. The attempts to use it for Playwright-based ingestion, before Docker, showed its value for offloading work that might block the main FastAPI event loop or conflict with its async requirements. Inside the Docker container, Playwright runs in its own process. - Clear API contracts matter. Pydantic models for requests and responses between the Electron app, the main FastAPI server and the Dockerized crawler were crucial for smooth integration. - Asyncio issues can persist. Explicit event loop policies are sometimes not enough. A library's internals or the hosting framework, such as Uvicorn on Windows, can have their own rules for managing loops for subprocesses. ## The AI approach My LLM assistant worked through the integration with me. It helped: - Outline the initial architecture for integrating Crawl4AI into FastAPI. - Refactor the `crawl4AI-agent-v2` Python scripts into modular services. - Draft Pydantic models for API request and response bodies. - Brainstorm solutions for the Playwright and asyncio NotImplementedError, including event loop policies and process isolation. - Generate the initial Dockerfile and the minimal FastAPI app structure for `crawl_service_docker`. - Debug import errors, indentation issues and logic flaws across the Python backend. Getting Playwright to run smoothly was hard. The Dockerized solution works, and the backend now supports RAG for the Electron desktop app. Next I want to use the frontend UI in my daily local LLM workflows. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Turning the ai-sdlc CLI into an Electron GUI Source: https://workflows.diy/blog/devflow-ui-sdlc-gui-rapid-build - Why: To re-implement the Python ai-sdlc CLI as a native Electron and Vue 3 GUI module, so the structured SDLC process is easier to use inside an existing AI toolkit app. - Challenge: Translating the Python CLI logic into TypeScript Electron services. Building a Vue 3 UI for the 8-step SDLC (Software Development Life Cycle) workflow. Integrating the module into the desktop app, all in less than six hours of AI-assisted development. - Outcome: A working SDLC module in the desktop app, with GUI project setup, feature management, step navigation, AI prompt generation and workflow advancement. It mirrors the original CLI and extends it. - Learnings: An existing codebase, such as the ai-sdlc Python tool packed with code2prompt, works as a clear specification for an AI assistant. That speeds up re-platforming and feature work. A strong system instruction and modular design keep AI-driven projects of this size manageable. - AI approach: An AI-first method where Gemini 2.5 Pro wrote 100% of the code for the SDLC module, in TypeScript services and the Vue 3 UI. The developer acted as architect, prompter (using the Python code as the spec) and validator. - Models used: Google Gemini 2.5 Pro Preview, guided by a detailed system instruction and the existing Python code as the specification. [ All writing ](/blog) June 3, 2025 # Turning the ai-sdlc CLI into an Electron GUI We re-implemented the ai-sdlc Python CLI as a native SDLC module in our Electron and Vue 3 desktop app. The AI wrote the TypeScript and Vue code in under six hours, and the module still needs end-to-end testing before deeper integrations. ## From CLI to GUI We added an SDLC module to our desktop app, which gives the structured ai-sdlc process a graphical interface. It re-implements the core logic of the open-source [ai-sdlc Python CLI tool](https://github.com/Vibe-with-AI/ai-sdlc) as a native TypeScript module in our Electron and Vue 3 app. The speed reflects the highly efficient approach at the core of my [AI-first Development Philosophy](/ai-first-philosophy). * The SDLC module's project dashboard in the desktop app. ## A graphical interface for a proven SDLC workflow The [ai-sdlc CLI](https://github.com/Vibe-with-AI/ai-sdlc) provides a structured 8-step method for guiding software development, especially with AI assistance. A command-line interface can be less intuitive for some users. SDLC makes this process more accessible and visual by: - Re-implementing the ai-sdlc file and state management (project initialization, feature tracking, step progression, prompt template handling) in TypeScript, in the Electron main process. - Building a Vue 3 frontend where users start projects, manage features, move through SDLC steps, view generated AI prompts and track progress. - Integrating the module into the desktop app, alongside the other AI features described in [The tech stack behind our desktop AI assistant](/blog/anatomy-desktop-ai-assistant-stack-features). ## How the rebuild went Our strategy relied on clear context and a plan, following the principles in [15 tips for AI-first development in AI Studio](/blog/gemini-2-5-pro-ai-studio-power-tips-revised). ### Understanding the blueprint with code2prompt To make the re-implementation accurate, we gave our development environment and Gemini the complete context of the original Python ai-sdlc tool. We used [code2prompt](https://code2prompt.dev/) to combine the whole Python project into one Markdown file. For large codebases, I built a [Tkinter GUI helper for code2prompt](/blog/code2prompt-tkinter-helper-gui). The combined output served as the technical specification. ### Systematic re-implementation from Python to TypeScript A detailed system instruction defined the target architecture: Electron, Vue 3, TypeScript, Node.js file system operations, and TOML and JSON parsing. It also set modular patterns, described in [The 30+ tools in my AI development stack](/blog/my-ai-development-power-stack). Gemini translated the Python logic into utility functions, main process services that mirror each ai-sdlc command, and the IPC and preload layer. ### Building the Vue 3 GUI With the backend logic in place, Gemini built the interface: a dashboard for project management and a detailed workflow view for the 8 SDLC steps, with prompt display and action buttons. This fits the idea in [Using conversational AI as the new IDE](/blog/fluid-dev-conversational-ai-ide). ### Collaborative debugging and refinement Minor integration issues and Vue-specific warnings came up during the build. We fixed them quickly through an iterative feedback loop with Gemini. ## The result In less than six hours, we turned the core of the ai-sdlc workflow into a fully integrated SDLC module. Users can now manage the full lifecycle in the desktop app, from initializing projects to completing features. The pace comes from guiding the AI well, as in [AI's Near-Flawless Execution](/blog/ai-first-vue3-site-migration-flawless-execution). ## Future integrations and the agnostic approach The SDLC module is LLM-agnostic at its core, like the original [ai-sdlc tool](https://github.com/Vibe-with-AI/ai-sdlc). It generates prompts that users can take to any* AI coding editor, VS Code fork, AI-assisted IDE or standalone AI chat. Users can choose from many models, as they can with [OpenRouter for its LLM variety](/blog/openrouter-ai-polyamory-mastering-your-llm-harem), and that flexibility is key. The bigger gain will come from the other features in our desktop app. Imagine a one-click SDLC planning flow. A local Ollama model, running on [NVIDIA GPUs + Ollama for local AI](/blog/nvidia-gpu-ollama-local-ai-powerhouse), would expand a feature request, and its output would feed SDLC's first step. When SDLC generates a prompt for the PRD, a button could "Send to Local AI Chat" and pre-populate the prompt in our app's Ollama chat interface. The AI's response could then be saved directly to the correct SDLC Markdown file. Similar integrations are planned for the Vision feature, which would analyze UI mockups for PRD generation. The RAG system could query existing project documents, as covered in [Do million-token context windows replace RAG?](/blog/to-rag-or-not-to-rag-navigating-large-context-windows) and [integrating Crawl4AI for RAG](/blog/crawl4ai-electron-rag-integration). Live Session summaries could become input for new ideas. ## Key takeaways - Providing a complete, existing codebase as a specification, with tools like [code2prompt](https://code2prompt.dev/), is highly effective for AI-driven re-implementation. - A clear system instruction that defines the target architecture and standards matters for AI coding assistants. Learning to prompt well is one of the [Six resources for vibe coding with AI](/blog/level-up-vibe-coding-6-essential-resources). - Modular design makes rapid, AI-assisted development of complex features possible. Clear [user stories](/blog/user-stories-foundation-for-efficient-development) matter here. - The developer's role becomes high-level architecture, precise requirement definition and careful validation, which enables fast development. The result is a system that holds up, which is a different job from the [AI hammer for throwaway apps](/blog/ai-hammer-kiss-throwaway-apps). Next, the SDLC module needs end-to-end testing and UI refinements. After that comes deep integration with the app's other AI tools. AI can also enhance workflows in [Google Sheets & Apps Script](/blog/google-sheets-apps-script-ai-workflows) and through platforms like [n8n](/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first). If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Using conversational AI as the new IDE Source: https://workflows.diy/blog/fluid-dev-conversational-ai-ide - Why: To describe Fluid Dev, a method where conversational AI is the main interface for writing code and reduces reliance on IDEs for core logic. - Challenge: Moving developers from IDE-centric coding, even with AI assistants, to a conversational process. This involves dialogue with the AI, step-by-step code generation and feedback loops with tools like Google AI Studio. - Outcome: A description of Fluid Dev, where conversational AI works as the main IDE. The post lists faster prototyping, a lower barrier to entry and a shift in focus from 'how' to 'what', with AI as a collaborator. - Learnings: Conversational AI can be guided to generate near-complete and accurate code step by step. The main interaction is dialogue, with context and rich feedback such as screenshots and stack traces. For many tasks, the IDE is used to run and debug code rather than to write it. - AI approach: This post describes an AI-first Fluid Dev workflow. The developer mainly talks with a conversational AI, such as Gemini in AI Studio, to plan, generate and refine code. The AI writes most of the code under human direction, which makes the chat the new IDE. - Models used: Google Gemini, used through Google AI Studio, is the conversational AI behind the Fluid Dev workflow in this post. The post describes this AI-centric approach. [ All writing ](/blog) May 29, 2025 # Using conversational AI as the new IDE Fluid Dev is a workflow where most of the code comes from a chat with Google Gemini, and the IDE mainly runs and debugs it. AI-generated code still needs human testing and an understanding of the principles behind it. For many tasks, my main development environment is now a conversation with Google's Gemini in Google AI Studio. That reduces the need for a traditional code editor and AI plugins. ## From augmented typing to conversational flow AI coding assistants started with autocompletion and snippets inside IDEs such as VS Code. Those tools boosted productivity. My own Fluid Dev process now runs mostly as a conversation, in four steps: - Start with a conversation. I explain my thinking, give the AI the context for the problem and describe the outcome I want. - The AI generates code step by step. It does not just give snippets. It guides me through the process and generates near-perfect code one step at a time. It works like an expert pair programmer who anticipates my needs and structures the solution. - Copy, paste and run. The generated code is often complete enough that I copy it from AI Studio, paste it into the execution environment and run it. - Refine with feedback. If something breaks or needs to change, I send the AI screenshots of errors, stack traces or a description of the unexpected behavior. That context lets it give targeted fixes or alternative code. ## The diminishing role of the code editor Fluid Dev relies less on AI-powered code editors for core logic. The heavy lifting happens in the conversation. The IDE is often where I run and debug code rather than where I create it. Many common tasks no longer need line-by-line typing or heavy use of in-editor AI suggestions. ## Why this shift matters - It lowers the barrier to entry. Complex coding tasks become easier to approach, because the AI guides the process. - Prototypes come faster. Ideas become working prototypes quickly, and the back-and-forth with the AI makes it easy to try different approaches. - The focus moves from how to what. Developers can concentrate on the problem and the functionality, not on syntax or boilerplate. - The AI is a collaborator. It offers guidance, generates solutions and helps troubleshoot, so it is an active participant rather than only a tool. ## Human oversight still matters AI-generated code still needs human oversight, testing and an understanding of the underlying principles. For many developers, the chat window is becoming the main place where ideas are discussed, refined and turned into working code. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # 15 tips for AI-first development in AI Studio Source: https://workflows.diy/blog/gemini-2-5-pro-ai-studio-power-tips-revised - Why: To share field-tested strategies for developers who build with Gemini 2.5 Pro in an AI-first workflow. - Challenge: Moving from using an LLM as an assistant to using it as the primary code generator and system architect takes specific interaction patterns. This post describes those patterns. - Outcome: A list of 15 tips for working with Gemini in AI Studio, starting with the system instruction and covering context, code generation, debugging and multimodal input. - Learnings: A detailed system instruction is the most useful technique in this workflow. When the AI knows its role and constraints, the developer's work shifts to specification, validation and orchestration. - AI approach: This post comes from an AI-first workflow in which Gemini 2.5 Pro, guided by a system instruction, was the primary implementer. The tips come from directing it. - Models used: Google Gemini 2.5 Pro Preview 05-06 in Google AI Studio, acting as the development partner. [ All writing ](/blog) May 19, 2025 # 15 tips for AI-first development in AI Studio A detailed system instruction is the most impactful technique when you build with Gemini 2.5 Pro in Google AI Studio. Google Gemini 2.5 Pro Preview 05-06 in Google AI Studio does precise work when it is properly guided. How you structure the collaboration decides the result. These 15 tips come from my recent work with it. ## 1. Write a detailed system instruction A system instruction is a detailed directive you give Gemini at the start of a project or a series of related sessions. It defines the AI's persona (for example, "Electron/Vue Desktop Application Development Assistant"), its goal, its constraints, output formatting, coding standards, the technology stack, security practices and its problem-solving method. Every output from the AI partner follows it. In an AI-first workflow, the LLM writes most of the code, so this is the most impactful technique for accuracy and consistency. It turns Gemini from a general-purpose model into a project-aware developer. Its code, explanations and architecture suggestions match the project from the first attempt. It also reduces repeated prompting for boilerplate and style, and it often gets complex tasks right on the first or second try. The PM Desktop App (an Electron, Vue, FastAPI and Docker application) runs on a detailed system instruction. It sets Gemini's role as an Electron/Vue desktop application development assistant. It also sets these rules: - Every modification or new file comes back as the complete file content. - Files use specific start-of-file and end-of-file markers. - Existing comments are kept, and new code uses a clear, hierarchical comment style. - The stack is Electron, Vue 3 with the Composition API, TypeScript, Vite, Tailwind CSS, Ollama and Whisper, with a modular main, preload and renderer architecture. - Security follows secure Electron practice, including context isolation, IPC security and API key management. - Errors are analyzed and fixes are proposed within the Electron and Vue context. Because of this briefing, the generated code for components, services, IPC handlers and Docker configurations has been consistently accurate and needed few changes. I decide what to build, and Gemini handles how it fits the project's requirements. ## 2. Keep continuity with an end-of-day handoff This is a disciplined protocol that goes beyond copy-paste between chats. At the end of a session, I prompt Gemini with a dedicated handoff prompt to write a handoff.md file. The file covers the session's progress, development history, architecture decisions and their reasons, challenges solved, the current state of the codebase and the agreed next steps. The next session starts from that file. In an AI-first workflow, Gemini is the main developer, so context has to hold across many long chats held at different times. The handoff file does that in four ways. - It preserves deep context. It records why the architecture is the way it is, the feature history and how past problems were solved. That is richer than pasting code snippets. - It makes resumption fast. Gemini can catch up to the exact state where you left off, whether you return hours or days later. - It reduces re-explanation and drift. Long chats can lose earlier constraints, and a handoff repeats them. - It forces a structured review. Writing the handoff makes you consolidate the current state and the next steps. At the end of each major session on the PM Desktop App, I use a handoff prompt that asks Gemini to act as a technical writer and software architect. The handoff.md covers the project overview, development history (such as the Ollama integration, the RAG backend and Dockerization), architecture decisions, key debugging challenges, the current state and future suggestions. The next session begins with the latest handoff.md. That is why Gemini can write new features that integrate with months of earlier AI-generated work. ## 3. Use code2prompt to supply context Pasting snippets works for small tasks. For a large project, [code2prompt](https://code2prompt.dev) scans the directory, applies include and exclude filters, and combines the relevant code into one context block for Gemini. In an AI-first workflow, it helps in five ways. - It gives Gemini context from many files and folders at once. That supports codebase analysis, cross-module refactoring and documentation for a whole project. - Include and exclude rules keep irrelevant code out. Answers become more focused, and token usage drops. - It replaces hand-copying code from complex directory trees. - It can keep the directory structure and use custom templates, so Gemini sees how the codebase is organized. - It works well on code Gemini wrote earlier. The model already knows the structure and style it created. To use it: - Install code2prompt with its recommended method, often pip or cargo, and see the official [Getting Started guide](https://code2prompt.dev/docs/tutorials/getting_started/). A common pip install is: pip install code2prompt_rs - Open a terminal in your project directory. - Run code2prompt with filters: ``` code2prompt . --include "**/*.py" --include "**/*.vue" --exclude "**/node_modules/**" --exclude "**/.venv/**" --output-file context_for_gemini.md ``` This gathers all Python and Vue files, excludes common dependency folders and saves the context to context_for_gemini.md. - Give Gemini the content of context_for_gemini.md, or use AI Studio's file upload for very large context if the feature is available. Then add your prompt. For a more visual way to make these selections on large projects, I built a [Tkinter GUI helper for code2prompt](https://www.workflows.diy/blog/code2prompt-tkinter-helper-gui). Gemini also helped me develop it. For example, after Gemini generated the initial structure of ai-desktop-assistant/kokoro_fastapi_server/rag_core/, I wanted error handling in all of its Python service modules. I ran: code2prompt ./kokoro_fastapi_server/rag_core --include "*.py" --exclude "__init__.py" --output-file rag_core_context.md I gave rag_core_context.md to Gemini with this prompt: "Analyze the provided Python modules from the rag_core package. Identify all functions that interact with external services or perform file I/O. For each, ensure try-except blocks catch specific exceptions (e.g., httpx.RequestError, ChromaDBError, FileNotFoundError), and that custom exceptions from rag_core.exceptions are raised or handled appropriately. Provide the complete, updated content for each modified file, adhering to our System Instruction." ## 4. Use the 1 million token context window strategically Gemini 2.5 Pro Preview has a 1 million token context window. Its publicly documented sibling, Gemini 1.5 Pro, scales to 2 million tokens. In one session, that window holds thousands of pages of text, a codebase of about 50,000 lines, or a very long conversation. It helps in four ways. - Gemini can hold an entire application in view. For the full RAG pipeline in ai-desktop-assistant, it referenced several service files at once, which made the generated and refactored code more consistent. - Less pre-chunking is needed. Google's [Gemini 1.5's long context capabilities](https://ai.google.dev/gemini-api/docs/long-context) documentation says the manual pre-processing needed to fit large documents or codebases can be reduced. Often you can provide the entire relevant corpus. - Many examples fit in the prompt. You can give numerous examples, specifications or a style guide, and Gemini can handle niche tasks with good fidelity. Sometimes that rivals fine-tuned models, without the training cost. - Multi-document analysis fits in one session. Synthesizing several large technical documents, comparing architectures in separate papers and reading a full user manual all become practical. To use it: - When refactoring or adding features across files, use code2prompt to combine the relevant code, which may span many files, into one input. - When asking for an application skeleton or a complex feature, include the complete design documents, user stories and technical specifications in the prompt. - For a new large module, combine the requirements, the relevant interfaces from earlier handoffs and the coding standards in one prompt within the 1 million token limit. - Feed large log files or text datasets to Gemini when pattern detection, anomaly detection or summaries need the bigger picture. When we built the multi-stage RAG backend for ai-desktop-assistant, the Electron app called the main FastAPI server, which called the Dockerized crawler service. The 1 million token window helped there. I gave Gemini the OpenAPI specifications or Pydantic models for the inter-service calls, the FastAPI router and orchestrator code, and the Electron main process TypeScript client code, all in one go. Then I prompted: "Given this entire interaction flow and the existing code for services A, B, and C, generate the new TypeScript function in Electron's crawlRagService.ts to correctly call the FastAPI /rag/ingest endpoint, handle its JSON response, and manage potential errors, ensuring it aligns with the System Instruction for IPC handling." That view let Gemini produce accurate, integrated code. Even with a 1 million token window, prioritize the most relevant context. For long-term memory across many unrelated tasks, fine-tuning or dedicated knowledge bases still matter, and RAG helps build those knowledge bases. Google also calls context caching a key optimization for API users who run frequent long-context queries. ## 5. Plan the architecture and let AI write the details Your job as the AI-first developer is to define the architecture, the overall plan and the contracts between modules. Then you prompt Gemini to implement each planned component. This combines your strategic thinking with the model's coding strength. You decide what to build and why. Gemini, guided by the System Instruction and the task prompts, works out how to build each piece. My plan for the RAG backend had a Dockerized crawler, a main FastAPI orchestrator and several rag_core services. I prompted Gemini for each piece in turn: - "Design the Dockerfile for the crawler service." - "Implement the FastAPI endpoint for /rag/ingest which calls the ingestion orchestrator." - "Write the chroma_service.py module as per these functions: [list the functions]." ## 6. Split work into modular tasks Structure your requests as a series of defined, modular tasks, the same way you would structure a software project. Each module of the application can map to a focused set of interactions with Gemini. With a clear scope and the System Instruction, Gemini can generate a whole Python module or Vue component with high fidelity. The result is a clean, maintainable AI-generated codebase. For example, one prompt asked for a whole router: "Create the complete Python file routers/rag_router.py. It should include an APIRouter, Pydantic models for [X, Y, Z], an ingestion_worker_rag function (based on previous discussions about multiprocessing and Playwright), and the /rag/ingest and /rag/query endpoints as specified here [details]. Ensure all necessary imports are included and adhere to our project's System Instruction." ## 7. Ask for step-by-step reasoning on hard problems For complex logic or debugging, ask Gemini to think step by step, explain its reasoning before giving the solution, or outline its approach first. This makes the model's problem solving visible. It often leads to more correct solutions, and you can redirect the model if its plan drifts before the final algorithm or bug fix is written. For example, a Playwright integration failed with a NotImplementedError on Windows. I prompted: "The Playwright integration is failing with a NotImplementedError on Windows. Analyze the provided traceback [paste traceback]. Explain the likely cause step by step, considering asyncio event loop policies on Windows. Then propose a series of solutions, starting with the simplest, and explain the rationale for each." ## 8. Use screenshots, diagrams and PDFs as input Gemini 2.5 Pro Preview, like the Gemini 1.5 family, is natively multimodal. It processes images directly and can reason over entire PDF documents within its 1 million token window. You can upload screenshots, diagrams, photographs, schematics or multi-page PDF specifications into Google AI Studio and prompt Gemini with both the visuals and the text. Visual input helps in five ways. - Beyond captioning. Gemini can answer detailed questions about visual content, transcribe text from images and PDFs, and locate objects with bounding box coordinates or segmentation masks. - Visual design to code. Give it a UI mockup or screenshot and ask for HTML, CSS and JavaScript, or Vue or React components. - Complex visuals. It can explain an architecture diagram, flowchart or database schema, point out issues, or write code for part of the system it shows. - Chat with PDFs. Upload a large technical manual, API documentation or research paper, then ask specific questions, summarize sections or extract key information. - Debugging visual output. If your application generates images or visual reports, upload a bad output and describe what you expected. Google's documentation on [Image Understanding with Gemini](https://ai.google.dev/gemini-api/docs/long-context#image_understanding) describes this native multimodality. It makes use cases possible that used to require chaining several specialized AI models. To use it in AI Studio: - Use AI Studio's upload features to add images or PDF files to your chat. The Google docs show SDK examples with the File API or inline Base64, but AI Studio usually wraps this in an upload button. - Refer to the uploaded files in your text prompt. You can attach several images. For example: "Based on the uploaded UI mockup (image1.png) and these branding guidelines (brand_colors.pdf), generate the Vue component code." - Be specific about the visual task. UI generation: "Generate HTML and Tailwind CSS for the user profile card shown in the screenshot." - Diagrams: "Explain the sequence of operations depicted in this flowchart." - PDFs: "Summarize section 3 of the uploaded technical manual regarding API rate limits." - Object detection, if your AI Studio prompt supports it: "Identify all the tools on the workbench in this image and describe their likely function." Gemini can output bounding boxes in JSON, but whether AI Studio displays them depends on its interface. - Use clear, sharp, correctly rotated images. With a single image, put your text prompt after it. For the Vision page in our Electron app, I designed a UI mockup first. I uploaded a screenshot of it and prompted: "Generate the Vue 3 component structure and initial Tailwind CSS for this Vision page layout. The layout should include areas for image upload or URL input, image preview, model selection with status, a prompt textarea and a response display area. Ensure it adheres to the responsive design principles outlined in our System Instruction." Gemini returned the foundational Vue components, which sped up the UI work for that feature. In another prompt I uploaded a diagram of the ai-desktop-assistant architecture and asked for "a concise textual description of the main components and their interactions, suitable for inclusion in our project's README.md." The exact upload methods, and the full range of multimodal features such as bounding box output or segmentation masks, vary with the AI Studio interface for your Gemini 2.5 Pro Preview version. Check the AI Studio UI and the preview documentation. ## 9. Require logging in generated code In your prompts or the System Instruction, ask Gemini to add // console.log in JavaScript, print() in Python, or suitable logging statements at the key points in the code it generates. Code that is instrumented from the start reduces the time you spend adding first diagnostic logs. You can check the execution path and variable state sooner. For example: "Generate the Python ingestion_worker_rag function. It will run in a separate process. Include print statements prefixed with [IngestionWorker_RAG Process {os.getpid()}] to trace its startup, key async operations, event loop policy setting and final result packaging for the queue." ## 10. Iterate with branch chats Use AI Studio's branch chat feature to explore variations or follow-up requests from one point in a conversation, without changing the main thread. When Gemini gives you a near-perfect component and you want a small change, such as a new feature or a different error handling strategy, a branch lets you try it without rebuilding the context in a new chat. It suits refinement from a strong output. Gemini generated the CrawlIngestionResponseModel. I branched the chat twice. Branch 1: "Add an optional traceback_debug: Optional[str] field." Branch 2: "Make the errors field a list of structured error objects instead of just strings." ## 11. Delete old messages to prune context Remove earlier messages, both yours and Gemini's, from the current AI Studio chat. Even with a large context window, older instructions or discussions that no longer apply can pollute the model's focus. Deleting them keeps the context relevant. Gemini then works on the current task, using the System Instruction and the latest handoffs. We first discussed run_in_threadpool for the crawler, then switched to multiprocessing. I deleted the earlier run_in_threadpool messages, so Gemini's advice on the ingestion worker covered only the multiprocessing approach. ## 12. Generate READMEs with AI Ask Gemini to write documentation, such as READMEs, API docs or code comments, from the code or a high-level project description. Gemini wrote the code under your System Instruction, so it knows that code well. Asking it for documentation often produces accurate first drafts, which cuts the manual work. After Gemini generated the whole ai-desktop-assistant structure and RAG backend, I prompted: "Generate a comprehensive README.md for the ai-desktop-assistant project. Describe its features, tech stack, prerequisites and setup instructions for the Electron app, the main FastAPI server and the Dockerized crawler service. Incorporate details from our previous handoff document discussions." ## 13. Use AI to debug Give Gemini the code, error messages, tracebacks and context, then ask it to diagnose the bug and suggest fixes. This works for complex logic problems, not only syntax errors. Gemini 2.5 Pro can often analyze complex tracebacks, such as the Playwright NotImplementedError, and suggest next steps or the root cause. It uses the System Instruction and earlier prompts to find where the code it generated went wrong. For example: "The ingestion_worker_rag process is still failing with a NotImplementedError despite using multiprocessing and setting WindowsSelectorEventLoopPolicy. Here's the latest traceback from the worker [paste traceback]. Given our goal to run Playwright in this isolated process, what other factors or deeper system interactions could be causing this, and what is the most useful next diagnostic or solution step?" This mirrors our debugging process for the Playwright issue. ## 14. Use web search for recent problems Turn on Gemini's web search, or ask it to search, to find information newer than its training data cutoff. For a very recent library release, an OS patch that breaks something or an undocumented API behavior, web search reaches recent community discussions, bug reports and articles. That can surface current leads. Developer example: "Search for recent issues or discussions related to Python 3.12 (MS Store version) and Playwright causing NotImplementedError with asyncio.create_subprocess_exec on Windows, even when WindowsSelectorEventLoopPolicy is set." ## 15. Use core branching to compare solutions Core branching is an advanced use of branch chats. Start with one core problem or objective. Then create parallel branches, each asking Gemini to explore a fundamentally different architecture or high-level solution. You can compare the plans, pros, cons and first code from each branch. That helps you choose an architecture without coding every path yourself. The core objective was: "Implement real-time updates from server to Electron client." I branched it into three prompts: - "Design a solution using WebSockets." - "Design a solution using Server-Sent Events." - "Outline a long-polling mechanism." For each branch, detail the setup, pros, cons and boilerplate server and client code. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Gemini built an image reorder app in under an hour Source: https://workflows.diy/blog/gemini-builds-image-reorder-app - Why: To build a simple client-side tool that lets users reorder images, rename them in sequence and download them one at a time or as a ZIP archive. It helps prepare image sets for presentations, online galleries, ordered data processing or any other use that needs ordered images. - Challenge: Building a drag-and-drop grid, keeping a preview carousel in sync with it, zipping many images on the client with JSZip, and managing button states based on image count or renumbering status. The AI also had to produce clean, maintainable HTML, CSS and vanilla JavaScript. - Outcome: A single-page web app, imagesortandsave.com, built entirely by Gemini. It supports image upload, drag-and-drop reordering, a synced preview carousel, an image modal viewer, sequential renumbering, individual downloads (limited to 10) and a "Download All as ZIP" option. It runs entirely in the browser. - Learnings: Modern LLMs like Gemini can build complete, practical web apps from scratch when guided by clear, iterative direction. The human role becomes architect, prompter and quality assurance lead. Vanilla JavaScript suits focused utilities, Tailwind CSS keeps styling simple, and JSZip handles client-side archiving. Browser limits, such as download throttling, must shape the design. - AI approach: Gemini generated 100% of the HTML structure, Tailwind CSS styling and vanilla JavaScript logic. I defined each feature in turn (carousel, grid, renumbering, downloads, ZIP), made core decisions such as a single-page app and JSZip, tested each iteration and asked for fixes and refinements across the session. - Models used: Google Gemini 2.5 Pro, the version used throughout our development chat, acted as a full-stack web developer under my architectural guidance and iterative prompting. [ All writing ](/blog) May 27, 2025 # Gemini built an image reorder app in under an hour The Image Reorder & Renumber app (ImageSortAndSave.com) was built by Google Gemini. It runs in the browser, lets you reorder and renumber images, and downloads the set as a ZIP. Reordering image files by hand, and renaming them one by one so they sort correctly (01_image.jpg, 02_another.png, and so on), is slow and error-prone. The [Image Reorder & Renumber app](https://www.imagesortandsave.com/) does it in the browser. I built it from scratch with Google Gemini, which wrote almost all of it. The app after reordering five photos, with the old and new filenames listed at the bottom. ## The problem it solves The core need is simple. - Arrange a collection of uploaded images into a specific sequence. - Assign new sequential filenames (e.g., "0.name.jpg", "1.name.jpg") that match the order. - Download the renumbered images for use elsewhere. The Image Reorder & Renumber app handles all three steps in the browser. ## Core features - Multi-image upload lets you add all the images you need to organize. - A drag-and-drop grid lets you drag images around to set the order. - A synced preview carousel at the top mirrors the order of the main grid, so you can see the sequence as you build it. - Clicking any image opens it in a full-size modal viewer with previous and next navigation. - A click on "Renumber Images" updates all filenames with a "0.", "1.", "2." prefix. The app shows a mapping of old to new names. - Downloads come in two options: Save individually, for up to 10 images. For smaller sets, you download each renumbered image directly. A limit of 10 makes sense given browser behavior. - Download all as ZIP, for any number of renumbered images. The app packages them into one "renumbered_images.zip" file with client-side zipping by JSZip. A `Zipping...` overlay shows that the zip is running. - The layout uses Tailwind CSS and adjusts to different screen sizes. ## The AI-first build process This app is a practical example of AI-first development. Google Gemini was the primary coder across our long chat sessions, which led to the app at [ImageSortAndSave.com](https://www.imagesortandsave.com/). My role was architect, project manager and QA lead. The whole build took about 60 minutes. - I outlined each feature in turn. We started with upload, then the grid, drag-and-drop, the carousel, renumbering, individual downloads, and finally the ZIP feature and UI refinements. - I set the technical direction: vanilla JavaScript for simplicity and direct browser execution, Tailwind CSS for styling, and JSZip for archiving. I also guided the overall single-page structure. - Gemini generated the complete HTML structure, the CSS (Tailwind classes and custom style blocks) and all the JavaScript for event handling, DOM manipulation, state management and algorithms such as renumbering and the JSZip integration. - After Gemini provided code for a feature, I tested it, reported bugs or changes, and Gemini returned revised code. That tight feedback loop was essential. Getting drag-and-drop right, keeping the carousel in sync and handling button disabled states took several rounds. The console logging we added helped me follow the AI's execution flow and debug issues together. ## Key technical challenges - The HTML5 drag-and-drop feels intuitive and reorders both the DOM and the underlying data. - The preview carousel always matches the live order of the draggable grid. - JSZip collects every image's Data URL into one ZIP file. The app shows feedback during zipping, which can block the page. - Download buttons enable or disable based on upload and renumbering status. The "Save Individually" option is limited by image count. - The action buttons switch from a column to a row on larger screens, using Tailwind's responsive prefixes. ## Why AI-first works for utility apps For focused utility apps like this one, the AI-first method has clear advantages. - Rapid development. Features can be built and iterated at a pace that would be hard for a solo developer. - Easier creation. People who can define requirements clearly can build tools, even when their line-by-line coding in a stack is still developing. The human handles the what and why, and the AI handles the how. - More time on user value. With the AI handling most of the implementation, the person orchestrating can focus on the user experience and on whether the tool solves the core problem. ## Try it out Visit [ImageSortAndSave.com](https://www.imagesortandsave.com/) and try the Image Reorder & Renumber app yourself. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # AI workflows in Google Sheets with Apps Script Source: https://workflows.diy/blog/google-sheets-apps-script-ai-workflows - Why: To help people with little coding experience build, test and deploy AI automations in the Sheets interface they already know. - Challenge: Making AI development accessible, opening up the 'black box' and enabling fast iteration with full data visibility. AI can now write most of the Apps Script code. - Outcome: A case for Google Sheets as a visual workflow engine for AI tasks. It covers data transparency, API integration (OpenAI, Gemini, WordPress, Mailchimp) and AI-generated Apps Script code. - Learnings: Google Sheets' visual data handling, Apps Script (especially UrlFetchApp for APIs and webhook calls) and AI's ability to write the connecting code lower the barrier to building custom AI solutions. Transparency and speed are its strengths. - AI approach: The core idea is an AI-first approach in which Google Gemini or a similar AI writes the Apps Script code. The post itself was drafted with an AI, using the same process it describes for building AI workflows. - Models used: This post explores how Google Sheets and Google Apps Script, paired with AI code generation (such as Google Gemini), create a transparent, fast development environment for AI-powered workflows. [ All writing ](/blog) May 25, 2025 # AI workflows in Google Sheets with Apps Script Google Sheets and Apps Script can call OpenAI, Gemini, WordPress, and Mailchimp, and AI can write most of the script. You can build one even if you do not code. Google Sheets with Apps Script lets you build, test and deploy an AI workflow in a sheet you already know. You watch your data change at every step, even if you have never written a line of JavaScript. AI such as Google Gemini can write the Apps Script code for you. You only describe what you want the script to do. The setup gives you speed and full data visibility. ## Why Google Sheets for AI workflows? Picture an AI workflow laid out in front of you. Raw data sits in one column, AI summaries in the next, and selected images beside them. Further along are the refreshed content and the exact payloads for WordPress or Mailchimp. Everything is visible in one place. - Every input, intermediate AI output and final result sits in a cell. You don't need to dig through databases or obscure logs. Data flow is easy to follow. - The process is as clear as the data. You can follow each value from left to right across the columns. Each custom Apps Script function acts as a processing "node" and shows how it transforms the value. - Visibility makes development faster. Mock up data, describe the Apps Script function you need to Gemini or another AI, paste the code in, call an AI API, and see the results in your sheet within minutes. - Tweak an input, ask your AI assistant to change a script, and watch the relevant cells update. Debugging becomes visual. - You don't need to be a JavaScript expert. Apps Script is JavaScript, and AI assistants such as Google Gemini can write most of the code it needs. Your main skill is describing the outcome you want. Familiarity with spreadsheets is the prerequisite that matters. ## What each tool does Google Sheets is more than a tool for numbers. In an AI workflow, it does four jobs. - Sheets is the frontend for entering data and parameters. - It is the data store for inputs and for the outputs from AI models. - Built-in formulas prepare data for AI and clean up its responses. - It is the visual dashboard for the results of your AI logic, in real time. Google Apps Script runs the automation, and AI is your coding partner. - Describe your goal, for example "take text from cell A1, send it to OpenAI, put the summary in B1," and an AI such as Gemini can write the Apps Script. - Apps Script works natively with Sheets, Docs, Drive, Gmail and more. - UrlFetchApp is Apps Script's connector to AI services, and AI can help you script it. It makes HTTP requests (GET, POST, PUT and so on) to any REST API. This means you can: Send prompts to OpenAI's GPT models for text generation, summarization, analysis, or vision tasks (as detailed in their [developer documentation](https://platform.openai.com/docs/overview)). - Call Google's Gemini API for multimodal tasks, including understanding images and text together ([Google AI Studio](https://ai.google.dev/gemini-api/docs)). - Integrate with virtually any SaaS platform that offers a REST API. That includes CMS platforms such as WordPress, email marketing tools such as Mailchimp, and many others. - Use PropertiesService to store your API keys. Your AI assistant can write that part for you. ## Google Sheets as a visual workflow engine Many people know visual workflow tools such as [n8n.io](https://n8n.io/), where you connect nodes to run a series of operations. Google Sheets with AI-generated Apps Script can run a similar sequence of steps, with direct data visibility. - Each row in your sheet is one instance of a workflow. - Cells act as nodes. Each cell, moving left to right, runs a custom Apps Script function that AI helped you write. The output of one cell becomes the input for the next. - Each Apps Script function, even one an AI drafted, gives you all of JavaScript for custom logic. - Apps Script can also send HTTP requests to webhook URLs. That lets a single cell trigger a larger workflow on [n8n.io](https://n8n.io/), which excels at this, or on a custom backend. Kick off an n8n workflow that starts with a Webhook Trigger from a sheet cell. An Apps Script function calls that webhook. - Use Google Sheets for data prep and AI calls, with AI writing the scripts. Hand complex, multi-system processes to an n8n workflow that your sheet triggers. ## A newsletter pipeline in Sheets Picture a newsletter content pipeline built largely from AI-generated scripts: - Enter your weekly newsletter topic in a cell. - Find relevant content. AI-scripted functions scan a "blog posts" sheet. Another AI call finds the top 3 most thematically relevant archived articles, based on their existing summaries. The results appear in the next columns. - Another AI-scripted function takes the chosen post's content, or your newsletter topic, and uses a vision-language model (such as those from OpenAI or Google Gemini) to recommend the top 3 most suitable images from your archive. The AI can analyze descriptions you have already generated for your images, or it can work from the textual content and suggest image themes. The selected image URLs appear in the next columns. Helper functions can display these images in the sheet. - The top chosen blog post is pulled into a cell. An AI-scripted function calls an AI model to give it a light refresh for reposting. The original and refreshed versions sit side by side. - Another AI-scripted function compares the original and refreshed content and highlights the changes. - Functions, which AI can help draft, structure the curated data (title, refreshed content, chosen image URLs and categories) as JSON payloads for your WordPress site and Mailchimp campaigns. Each exact API payload sits in its own cell. - The next step is API posting. Further scripts can POST this data to the WordPress and Mailchimp APIs. ## Getting started - Skim the [Google Apps Script documentation](https://developers.google.com/apps-script) to learn the environment. - Pick a model and read its API docs. Start with [OpenAI](https://platform.openai.com/docs/overview) or the [Google Gemini API](https://ai.google.dev/gemini-api/docs). - Start simple with AI's help: Open Apps Script in a Google Sheet. - Ask Google Gemini (or another capable AI): "Write a Google Apps Script custom function that takes text from the cell it's called on, sends this text to the OpenAI API for summarization using a specific model, and returns the summary. My OpenAI API key should be stored in Script Properties under the name 'OPENAI_API_KEY'." - Review the generated code, paste it into Apps Script, store your API key and test it in a cell. - Build from there, describing each new step to your AI coding assistant. - Use the sheet to see your data at every stage. It is your best debugging and learning tool. Open a blank sheet and describe your first step to an AI assistant. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # SEO audits with Crawl4AI, Python and an LLM Source: https://workflows.diy/blog/hyper-efficient-seo-audits-ai-workflow - Why: To show a method for auditing a website's SEO quickly. It combines a web crawler (Crawl4AI), Python for data processing and an LLM guided by an AI-generated System Instruction. The goal is to judge a site's validity and content expertise efficiently. - Challenge: Developing an effective System Instruction for the LLM to perform a detailed SEO audit. Aggregating and cleaning crawled website data into a format suitable for LLM analysis. Orchestrating the different tools (Crawl4AI, Python scripts, LLM interaction) into one workflow. - Outcome: A blog post on the AI-driven SEO audit process. The workflow can produce SEO audit reports that highlight gaps between a site's claimed expertise and its actual SEO health and content quality. - Learnings: A well-defined System Instruction is essential for an LLM doing complex analysis such as an SEO audit. Meta-prompting, where the LLM writes its own instructions, works well. Combining Crawl4AI for data gathering, Python for processing and an LLM for analysis makes a fast audit system. It is especially useful for judging the credibility of websites quickly. - AI approach: The core of this method is an AI-first approach. An LLM writes a detailed System Instruction for the SEO audit. Then an LLM, possibly the same instance or another, uses that instruction to analyze the crawled and processed site data and produce findings. This post was refined with the same AI-assisted process. - Models used: Google Gemini 2.5 Pro Preview (or similar advanced LLM) was used to generate the System Instruction for the SEO audit and to act as the SEO analyst executing the audit based on provided data. [ All writing ](/blog) June 3, 2025 # SEO audits with Crawl4AI, Python and an LLM A workflow that uses Crawl4AI to gather a site's pages, Python to clean them, and an LLM to write an SEO audit from an AI-written system instruction. It can flag gaps between a site's claimed expertise and its actual content. This post outlines an audit method for a website's SEO health and content validity. It combines Crawl4AI, Python and a large language model (LLM) guided by a custom system instruction. ## The components of the audit engine The process uses four components: - Crawl4AI is the data harvester. It is an asynchronous Python web crawler that gathers website data. It can deep crawl to collect URLs, HTML structure, text content and links, and save the output as structured Markdown files. Configuration might look like this: # (Illustrative snippet from a crawl script) from crawl4ai import AsyncWebCrawler, CrawlerRunConfig, CacheMode from crawl4ai.deep_crawling import BFSDeepCrawlStrategy from crawl4ai.markdown_generation_strategy import DefaultMarkdownGenerator TARGET_DEPTH = 3 # Depth of crawl md_generator = DefaultMarkdownGenerator() config = CrawlerRunConfig( deep_crawl_strategy=BFSDeepCrawlStrategy(max_depth=TARGET_DEPTH), markdown_generator=md_generator, cache_mode=CacheMode.BYPASS # Ensures fresh content ) # ... rest of crawler setup ... - Python and Jupyter notebooks are the orchestrator and processor. Python scripts start the crawls and process the data. An aggregation script, for example, can consolidate the crawled Markdown files. An aggregation script might include: # (Illustrative snippet from an aggregation script) from pathlib import Path def clean_markdown_content(content): # Example: Regex to remove common boilerplate content = re.sub(r"[Skip to content].*?Main Menu.*?\n# ", "\n# ", content, flags=re.DOTALL | re.MULTILINE) content = re.sub(r"\nRelated Posts:.*?Copyright © \d{4}.*?All Rights Reserved\.\s*$", "", content, flags=re.DOTALL | re.MULTILINE) return content.strip() all_md_files = list(Path("./crawled_output_folder").rglob('*.md')) with open("aggregated_site_content.md", "w", encoding="utf-8") as outfile: for md_file_path in sorted(all_md_files): # ... logic to write filename as header, then cleaned content ... # with open(md_file_path, "r", encoding="utf-8") as infile: # original_content = infile.read() # cleaned_content = clean_markdown_content(original_content) # outfile.write(f"## START OF FILE {md_file_path.name}\n\n") # outfile.write(cleaned_content) # outfile.write(f"\n\n--- END OF FILE {md_file_path.name} ---\n\n") pass # Simplified for brevity - An advanced LLM, such as Google Gemini, is the analyst and strategist. It processes the aggregated text and performs the SEO analysis, guided by a System Instruction. - The LLM-generated System Instruction is the analyst's guide. It is a detailed document, ideally generated by an LLM, that defines the scope, methodology and reporting structure for the SEO audit. --- ## Meta-prompting for an expert AI analyst "Meta-prompting" (asking an LLM to write its own instructions for a complex task) is useful for several reasons: - An LLM that defines an expert role often considers nuances you might overlook at first. - The LLM understands how it processes information best, so the structure and detail it writes are often tuned for its own execution. - It lets you define expert roles for many tasks quickly. ### What makes a good system instruction? An effective System Instruction for an SEO audit should include: - A clear role and goal. An example snippet: > "You are an elite SEO strategist and technical auditor. Your primary goal is to analyze provided scraped website data and produce a prioritized, actionable SEO audit report." - Defined input expectations. What data format and content will it receive? > "You will receive scraped data. This data should ideally include URLs, HTML Content (as Markdown), Text Content, HTTP Status Codes (if available), Page Titles, Meta Descriptions, Header Tags." - Core analysis pillars and detailed checkpoints. These set the areas of investigation: technical SEO, on-page content, E-E-A-T and LLM-specific factors. An example snippet for the technical SEO pillar: > "1. Technical SEO Fitness * Crawlability and Indexability * Robots.txt Analysis. Are LLM-specific user-agents handled? * XML Sitemap Review * Canonicalization Assessment" - A prioritization framework. How to classify the severity of issues, for example P1 Critical, P2 Important and P3 Best Practice. - A specific output format. The structure of the final report: an executive summary, detailed findings and a prioritized action plan table. - Guiding principles. The overall philosophy: user-first, data-driven and E-E-A-T centric. ### Prompting an LLM to write the system instruction To have an LLM generate these instructions, define its role as the creator of the instructions. For example: > "You are a world-class expert in designing operational frameworks for AI agents. Create a comprehensive 'System Instruction' document for an AI whose task will be to perform a full SEO audit of a website based on scraped Markdown data. This AI should act as a top-tier SEO consultant. The System Instruction must cover all critical aspects of modern SEO, including technical factors, on-page content, E-E-A-T, and considerations for LLM-based search. Define the AI's role, expected input data, core analysis pillars with detailed checkpoints, a prioritization framework, the desired output report structure, and guiding principles. Ensure the instructions are detailed and thorough, as this document will be the AI's sole guide." The LLM then generates the detailed System Instruction, which guides the AI that performs the audit. --- ## The workflow from data to insight - Define the target and scope. Specify the website and depth for the audit. - Craft the System Instruction with meta-prompting. Use an LLM to generate the comprehensive System Instruction for an SEO audit. - Deploy Crawl4AI with Python. Run the crawler script to gather website data, outputting Markdown files. - Consolidate and prepare the data with Python. Aggregate the crawled data. The example script showed how to clean and combine files, perhaps adding delimiters like "--- START OF FILE filename.md ---" and "--- END OF FILE filename.md ---" around each file's content for clarity when presenting it to the LLM. - Engage the LLM analyst. Provide the aggregated Markdown content and the AI-generated System Instruction to an LLM instance. - Receive the audit report. The LLM processes the data against the System Instruction and outputs the SEO audit. --- ## Outcomes beyond speed This workflow offers these benefits: - The audit can show when a site that claims expertise, for example in SEO services, has basic SEO flaws, E-E-A-T gaps or low-quality content. It might flag findings such as "Widespread Duplicate & Near-Duplicate Content" or "Content Quality & E-E-A-T Concerns: A substantial portion of the blog content exhibits patterns consistent with AI-generation without sufficient human oversight." - Systemic issues such as problematic URL structures or unoptimized archive pages become clear. An audit might note: "Critical Technical Flaws: Broken internal links, suboptimal URL structure for blog posts (date-based)." - Guided by E-E-A-T principles, the LLM can flag content that lacks depth or unique insight. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Six resources for vibe coding with AI Source: https://workflows.diy/blog/level-up-vibe-coding-6-essential-resources - Why: To give AI consultants and developers six resource categories for AI-first development. They cover MCP directories, GitHub trending, rule directories, expert knowledge sources, boilerplates and n8n. - Challenge: Keeping up with fast-moving AI tools, picking the ones that matter, and moving from experiments to AI applications that do real work. The post also covers community rules, expert guidance and automation platforms. - Outcome: A guide to six resource categories, what each one is for, and how to fit them into a developer's daily and weekly routine. It names n8n.io and workflows.diy as examples. - Learnings: AI-first development depends on continued learning and deliberate tool adoption. MCP directories surface new tools, GitHub trending shows active projects, and rule directories show practices that work. Expert coaching gives a personal strategy, boilerplates speed up project starts, and n8n automates AI tasks. - AI approach: The post promotes an AI-first approach in which developers act as AI orchestrators. n8n for AI automation and workflows.diy for implementation strategy and coaching support that approach. - Models used: The post is written for developers who use LLMs such as Google Gemini and OpenAI models in AI-first development. It points to n8n.io for AI automation and workflows, and to workflows.diy for implementation guidance and coaching. [ All writing ](/blog) June 1, 2025 # Six resources for vibe coding with AI Vibe coding moves fast, so MCP directories, GitHub trending and rule directories are worth checking every week. Vibe coding moves fast. These six resources are the ones to check regularly. ## MCP directories MCP (Model Context Protocol) directories list services that give AI agents context and control over outside systems. Check them weekly, and you will see quickly whether a new service fits your workflow. Two directories to check are Glama and Smithery. Resource URL(s) Description MCP directories [https://glama.ai/mcp](https://glama.ai/mcp) [https://smithery.ai/](https://smithery.ai/) Directories of services that give AI agents context and control over systems. Check them to find tools that fit your workflow or solve a current problem. ## Trending GitHub repositories GitHub's trending page shows projects that are gaining traction, filtered by day or week. Browse it weekly for projects that match your interests or current work. Clone a project and run it. Tinkering with the code is one of the most effective ways to learn a new technique. A project might also suggest an addition to your [AI Power Stack](/blog/my-ai-development-power-stack). All you need is a GitHub account. Resource URL(s) Description Trending GitHub repositories [https://github.com/trending?since=weekly](https://github.com/trending?since=weekly) Shows projects gaining traction, daily, weekly or monthly. Use it for ideas and experiments. Requires only a GitHub account. ## Rule directories Rule directories collect rules that steer AI code generation toward a chosen behavior. Good rules encode what experienced engineers do, from breaking a problem apart to following coding standards. Reusing them means you do not start each project from scratch. To judge a rule, check how many people use it. Adoption is a useful signal of practical value. [Not So Bright Ideas](https://www.notsobrightideas.com/cursorrules) shows user adoption counts for its rules, so it is a useful proxy for community validation. Cursor Directory and Playbooks are useful collections too. Resource URL(s) Description Rule directories [https://cursor.directory/](https://cursor.directory/) [https://playbooks.com](https://playbooks.com/) [https://www.notsobrightideas.com](https://www.notsobrightideas.com/cursorrules) Collections of rules that steer code toward best practices, mirroring the work of talented engineers. Check user counts to gauge a rule's value. ## Level up your own knowledge Good tools do not replace understanding. Learn from engineers and researchers who know model performance, benchmarks and the principles behind AI. I follow channels such as @engineerprompt, @ycombinator, @fireship, @samwitteveenai and @IBMTechnology on YouTube. Applying that knowledge to a real project is harder. [workflows.diy](/#pricing) offers 1:1 coaching calls for people and teams adopting an [AI-first development methodology](/blog/ai-first-vue3-site-migration-flawless-execution). I run this service as an AI automation consultant and AI-first software developer. My own workflow is AI-exclusive, and Google Gemini does most of the coding. Free resources cover the basics of AI. workflows.diy focuses on applying AI to your context and business goals. It helps teams find AI opportunities, build custom AI solutions and set an AI strategy and roadmap. Resource URL(s) Description Level up your own knowledge and personal support General knowledge sources (YouTube): [/@engineerprompt](https://www.youtube.com/@engineerprompt), [/@ycombinator](https://www.youtube.com/@ycombinator), [/@fireship](https://www.youtube.com/@fireship), [/@samwitteveenai](https://www.youtube.com/@samwitteveenai), [/@IBMTechnology](https://www.youtube.com/@IBMTechnology) Personalized AI strategy and application support: [https://workflows.diy](/#pricing) Engineers and researchers to follow on YouTube. workflows.diy offers 1:1 coaching and ongoing guidance on practical AI solutions, prompt engineering and evaluating AI output. ## Boilerplates Boilerplates are pre-built configurations and project structures that experienced developers write for common project types. Starting from one skips the setup work for authentication, payment integration, database connections and basic UI layouts. Reinventing these parts for each project wastes time. A boilerplate gives you a tested base that someone else already built, and the options range from free open-source kits to paid, feature-rich ones. To use one, list the parts that do not set your project apart, such as user authentication, subscription billing or a UI framework setup. Search for boilerplates that cover those parts and match your stack. Build your features and business logic on top of the boilerplate. [Boilerplate List](https://boilerplatelist.com/) is a good place to find starter kits. It sorts them into web apps, SaaS products, mobile projects and more, and you can filter by stack or cost. Resource URL(s) Description Boilerplates [https://boilerplatelist.com/](https://boilerplatelist.com/) Pre-built configurations for common parts such as authentication and payments. Boilerplate List is a good place to find them. ## n8n and workflows.diy templates [n8n.io](https://n8n.io/) is a low-code automation platform for complex, multi-step workflows. It integrates with many third-party services and places few limits on what you can build. You can add custom code nodes in Python or JavaScript when the built-in nodes do not cover your logic. n8n suits AI-first development. It supports AI agent chat and lets you scrape and summarize webpages with AI, as in my popular [Jina.ai scraper workflow](/blog/n8n-jinaai-multipage-scraper-10k-milestone). Its community publishes a large library of [n8n community templates](https://n8n.io/workflows/), and the platform matches the [codability and integrability AI-first toolchains need](/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first). At workflows.diy, we implement AI solutions for organizations, with a focus on n8n. I have shared 33 distinct workflow templates on n8n.io. The most popular are covered in [the top n8n AI automation workflows by popularity](/blog/top-n8n-ai-automation-workflows-by-popularity). They include AI-powered reporting, automated workflow backups, comparing vision models, monitoring YouTube channels, analyzing YouTube video comments and creating blog content from PDFs. n8n.io itself has over 2000 publicly available templates from the community and the n8n team, plus guides. Resource URL(s) Description n8n and workflows.diy templates Platform and community workflows: [https://n8n.io](https://n8n.io/) [https://n8n.io/workflows/](https://n8n.io/workflows/) (Community) workflows.diy custom workflows: [https://workflows.diy](https://www.workflows.diy/) [n8n.io/creators/joe/](https://n8n.io/creators/joe/) (Templates) n8n.io is a low-code automation platform with many third-party integrations, AI agent chat, AI web scraping and custom code. It has over 2000 community templates. workflows.diy has n8n expertise and shares templates on n8n.io, such as AI reporting, YouTube analysis and RAG systems. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Local PR Buddy reviews code before you push Source: https://workflows.diy/blog/local-pr-buddy-ai-code-insights-before-push - Why: To introduce 'Local PR Buddy,' a CLI tool (with planned VS Code integration) that provides AI-powered feedback on local Git changes (branch diffs or staged changes) before a remote Pull Request is created, enabling developers to 'shift left' and improve code quality early. - Challenge: Bridging the gap between local development and formal PR reviews. Many issues are caught late. Newer developers can be intimidated by PRs. This tool aims to provide early, private, AI-driven insights (describe, review, improve, ask) to address these challenges. - Outcome: A functional Python CLI tool with four core AI-powered commands that analyze local Git diffs. The tool is designed to be extensible and integrate with VS Code, promoting better coding habits and earlier issue detection. This blog post explains its features, benefits and future vision. - Learnings: Developing a local-first AI tool requires Git interaction that handles branch diffs, staged changes and merge-bases. It also requires prompt engineering for varied AI tasks (summarization, review, suggestion, Q&A) and a modular architecture. Providing full content of new files to the AI is crucial for accurate analysis. VS Code integration is key for usability. - AI approach: Local PR Buddy is an AI-first tool for developers. It uses LLMs as its core analysis engine. The development of the tool itself heavily involved AI for code generation, prompt refinement and debugging, embodying an AI-first development philosophy for creating AI-powered developer tools. - Models used: The Local PR Buddy tool itself uses LLMs (configurable via LiteLLM, e.g., GPT-4o-mini, Claude, Gemini) to analyze code. This blog post was drafted with AI assistance to explain the tool. [ All writing ](/blog) June 13, 2025 # Local PR Buddy reviews code before you push Local PR Buddy is a Python CLI that asks an LLM to review your staged or branch changes on your own machine, before you open a pull request. You finish a feature, and the branch is ready to share. Before you click "Create Pull Request", three questions come up: is it really ready, did you overlook something, and how will you explain the changes? Those questions are what this tool answers before the code goes public. Feedback usually starts after you open the pull request. I built Local PR Buddy to get that second look earlier, on your own machine, before the code is public. Getting the scope right first matters too, as in [nailing down your user story before you build](/blog/user-stories-foundation-for-efficient-development). Local PR Buddy is a command-line tool that brings AI code analysis into your local Git environment. It helps you refine your work, understand your changes and push with more confidence. ## What a pull request is and why it matters locally On a team, you will see pull requests (PRs) on GitHub or merge requests (MRs) on GitLab. A PR proposes merging the changes on your branch into a central branch such as main, develop or master. Opening one tells the team that the work is ready and asks them to review it and approve it if it looks good. A PR starts three kinds of work: - Code review of correctness, style, potential issues and project standards. - Discussion, where questions are asked, clarified and answered with suggestions. - Automated checks, where continuous integration (CI) runs tests, linters and other quality gates. Local work benefits from the same scrutiny, even if you work alone or are learning. Applying it before you share your code gives you four things. - You catch mistakes when they are easiest to fix. A small logic error or a confusing variable name is simpler to correct while the code is fresh, not days later in a formal review. - You learn in private. You get feedback on quality without public critique, and you see what good code looks like. - You build confidence. A PR is less daunting after a first automated pass and some refinement. - You build habits. Describing your changes, thinking about their impact and spotting issues locally makes you a more effective developer. It also reflects the [AI-first philosophy](https://workflows.diy/ai-first-philosophy) of iterative refinement. Local PR Buddy is your AI-powered assistant for these local pre-flight checks. ## What Local PR Buddy does Local PR Buddy is a Python CLI that uses large language models (LLMs) to analyze Git changes in your local repository. The core analysis does not need your code on a remote server. It looks at two kinds of changes: - Branch diffs: the changes on your feature branch compared with a target branch such as main. It uses the merge-base for an accurate comparison. - Staged changes: the modifications you have added with git add and are about to commit. It has four commands. - /describe generates a title for your changes, a type (such as Feature, Bug fix or Refactor) and a short bullet-point summary. Use it to draft commit messages or the first description for a pull request. - /review gives a high-level AI review. It often flags areas to improve, security considerations and a rough estimate of review effort. - /improve analyzes your new code and suggests concrete improvements. It shows your existing snippet next to the proposed version, with an explanation of the benefits. It helps you learn new patterns and catch subtle issues. - /ask {your question} answers questions about the diff, such as "Does this new error handling cover the failure cases?" It works like an AI peer who is always available for a quick, private look at your changes before you share them. ## Who it helps The goal is to address common pain points for developers at every level. ### For experienced developers An extra layer of automated review still helps confident developers. - A second pair of eyes. A quick local review can catch typos, missed edge cases and unclear code. - Pre-review polish. A PR that has had automated scrutiny makes the human review smoother and faster for your team. - A documentation head start. The output of /describe can become the starting point for a full PR description. ### For newer developers Git, branches and code review can feel overwhelming. Local PR Buddy works as a learning companion. - Review rehearsal. /review and /improve show what feedback you might get in a real review, in private and without pressure. - Actionable learning. /improve shows how your code could be better. It fits the approach in [leveling up your vibe coding](/blog/level-up-vibe-coding-6-essential-resources). - Practice describing your work. /describe helps you summarize your changes. - Confidence. Making improvements based on local AI feedback builds confidence. ### For all developers - A true shift left. Quality checks start at the beginning of your workflow. - Focus on what matters. You iterate faster and spend less time on minor issues in formal review. - Privacy and control. Diffs are processed locally and sent only to the LLM API you configure, which can be a local model through [Ollama](/blog/nvidia-gpu-ollama-local-ai-powerhouse). ## How it works Local PR Buddy is built with Python and several libraries. - Git interaction. It uses GitPython for operations such as merge-bases, and it parses git diff --staged for staged changes. It sends the full content of newly added files to the AI. - AI integration. LiteLLM connects to providers such as OpenAI, Anthropic and Google, and to local models through Ollama. It offers the same kind of flexibility as [OpenRouter](/blog/openrouter-ai-polyamory-mastering-your-llm-harem). API keys live in a local .env file. - Prompt engineering. Prompts in .toml files, using Jinja2 templates, guide the AI for each tool. They draw on the same principles as [code2prompt and Context7](/blog/code2prompt-vs-context7-ai-coding-context). - Structured output. Prompts ask the AI to return YAML, which the Python tools parse. - Modular design. The code is organized into core, providers, tools and prompts directories, which is part of my [AI development power stack](/blog/my-ai-development-power-stack). - User interface. A CLI with styled output through colorama, and a .vscode/tasks.json file for VS Code integration. ## Other uses The main goal is feedback before a PR, but the tool supports other work too. - Commit messages. Use the /describe output as a starting point for conventional commit messages. - Automated pre-commit checks. A Git hook could run /improve --staged. That extends local automation, much like [n8n automations](/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first). - Onboarding. New team members can learn coding standards and review expectations from it. ## Next steps The core Python CLI with its four commands works. The next step is deeper VS Code integration. - VS Code extension. We have started building it so that commands run from the Command Palette and show results in VS Code's Output Channel. - Webviews. The plan is for the Python tools to output structured JSON, so the extension can render results in interactive HTML Webview panels. This mirrors the UI in my [Desktop AI Assistant](/blog/power-stack-desktop-ai-assistant) and [PlantDex](/blog/plantdex-mvp-journey-vue3-supabase-pinia-ai) projects. - Phase 4 polish. Ideas include SARIF output for the Problems panel and interactive application of suggestions. --- ## Questions and answers ### What is the main benefit of a local PR tool? It gives you privacy, speed and room to iterate. Your code does not go to a third-party review service before you are ready. Feedback arrives right away, without waiting for CI or human reviewers, and you can fix issues before you open a formal pull request. ### I am new to Git. How can Local PR Buddy help? It is a good learning tool. /describe helps you summarize your work for commit messages. /review and /improve give you a private preview of the feedback a real code review gives, and they show what to look for. ### Does this replace human reviewers or tools like GitHub Copilot? No, it complements them. Local PR Buddy is for pre-flight checks by the developer, while human reviewers add context and architectural oversight. Copilot helps write code line by line, and Local PR Buddy analyzes a set of changes, which is a diff. ### How does it see my code changes? It reads your local Git repository. For branch comparisons, it finds the common ancestor (the merge-base) to get an accurate diff. For staged changes, it processes the output of git diff --staged. The diff text is then sent to an AI. ### Which AI models can I use? It uses LiteLLM, which supports many models. That includes OpenAI's GPT series, Anthropic's Claude, Google's Gemini and open-source models you can run locally with Ollama. You set the model and the API key. ### Is it complicated to set up the prompts? No. The tool ships with predefined, optimized prompts for each command, stored in .toml files. Advanced users can customize them, but the tool works out of the box. ### Does /improve change my code? No. It sends your diff to the AI and asks for specific suggestions. It shows your existing code, the proposed version and an explanation. You decide whether and how to apply each suggestion. ### Will it slow down my local development? An AI call takes a few seconds. Catching issues locally avoids lengthy back-and-forth in a PR review and broken builds, which saves time overall. ### What does shift left mean? Shift left means moving quality work, such as testing and review, earlier in the development pipeline. Local PR Buddy shifts left by letting AI review your changes on your machine before you commit or push. ### How will the VS Code extension improve on the CLI? The extension will put these commands in the VS Code interface, through the Command Palette or context menus. Future versions aim to show results in rich Webview panels, which are more interactive than terminal output. I built this tool with AI, as covered in [this post on AI-first site migration](https://workflows.diy/blog/ai-first-vue3-site-migration-flawless-execution). The project will appear on my [GitHub](https://github.com/workflowsdiy) soon. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # MiniFrames turns a web page into a video Source: https://workflows.diy/blog/miniframes-turns-a-web-page-into-a-video - Why: A coding agent can already write an HTML page with timed animation. MiniFrames turns that page into a finished video file. - Challenge: Freezing a browser page's clock so any frame can be captured on demand, and placing mixed audio to within a few milliseconds in FFmpeg. - Outcome: A command-line renderer with four commands (check, snapshot, preview, render) and companion tools for narration, music, stills, clips and frame review. The 93-second showcase was made with them. - Learnings: Keep the models outside the renderer. Each companion writes files the page reads, so a bad take gets redone without touching the render. - AI approach: Claude Code wrote most of the code across six milestones. Codex reviewed the work, and each review's findings were fixed in their own commits. - Models used: Claude Opus 5.5 in Claude Code co-wrote 151 of the 186 commits. Codex ran separate review rounds, and its findings became their own fix commits. [ All writing ](/blog) October 13, 2026 # MiniFrames turns a web page into a video MiniFrames renders an HTML page to MP4 on a virtual clock and makes no AI calls. Its companion tools made the 93-second showcase on my own computers. You write one HTML page, and MiniFrames captures every frame in Chromium and joins them with FFmpeg into an MP4, MOV or WebM file. I built it between October 6 and 13, 2026. Its companion tools made the showcase below, from the narration in my cloned voice to the 5-second clips. The showcase, 93 seconds with sound. The narration, music, stills and clips all came from the companion tools. ## The page holds still while Chromium films it A browser page runs on wall-clock time, so a capture that takes longer than a frame would miss animation. MiniFrames replaces `requestAnimationFrame`, timers, `Date`, `performance.now` and `Math.random` with a virtual clock. Time moves only when the renderer seeks to the next frame, and randomness is seeded. Chromium captures each frame as a PNG over the DevTools protocol and pipes it to FFmpeg. Time stands still inside a frame. A loop that waits for `Date.now()` to change never ends, so a page has to animate from the clock rather than poll it. In return, the captured frames match byte for byte between stepped and skipped seeks, and between one and four render workers. ## Four commands cover the loop `miniframes check --dir examples/gsap-promo miniframes snapshot --dir examples/gsap-promo miniframes render --dir my-video --out ~/Desktop/promo.webm --crf 25` `check` looks at every frame for cut-off and overlapping text, and exits with an error code when it finds some. `snapshot` saves up to 14 stills and a contact sheet to review. `preview` plays the page in your browser with sound, lets you scrub it and reloads when you save. `render` writes the file in one of three formats. Format Video Sound Transparent MP4 (default) H.264, CRF 18 AAC No MOV ProRes 4444 PCM Yes WebM VP9, CRF 30 Opus Yes ## The models live in the companions I kept every model out of the renderer. A model can answer differently on each run, and a renderer that must give the same frames every time can't depend on one. Each companion writes files, such as a WAV, a timeline or a still, and the page reads them like any other asset. A bad take gets redone without touching the render. Companion What it made for the showcase Model mf-narrate The narration, in a clone of my voice Qwen3-TTS 1.7B Base mf-transcribe A blind listening check of every narration clip whisper-large-v3-mlx mf-voxcpm2 The cameo line, "In a world where web pages dream of the big screen." VoxCPM2 mf-music A 132 BPM chiptune bed, ducked 12 dB under the voice None, it is seeded mf-images Four stills Qwen-Image 2.1 Turbo mf-video Four 5-second clips with their own sound, one of them a tin robot flipping a pancake LTX-2.5 distilled mf-page The page, built from the narration and music None mf-frames A ranked list of frames most likely to look wrong Clef-Flash 8-bit The narration and the robot clip ran on my Mac. The cameo voice, the stills and the other three clips ran on my Windows PC with an RTX 4090. Every model in the showcase ran on those two machines. ## What the showcase run recorded The script has 29 phrases in 10 scenes, and mf-narrate made 37 attempts to voice them. Six phrases were retried. One retry fixed "FFmpeg" heard back as "FMPEG", and another fixed a pace of 5.50 words a second against a limit of 5.29. mf-transcribe then recognised all 29 clips blind. Each still took 38 to 45 seconds. Three clips took 92 to 99 seconds each on the RTX 4090, and the fourth took 180 seconds on the Mac. Before that clip went in, mf-frames scanned 186 frames at half-second spacing in 163 seconds and flagged six moments to look at. On the final cut, `check` finished with no errors and no warnings. The first file in the project folder is stamped 13:56, and the final render 18:38. ## Bugs from the build - Sound landed 11 ms late. An input seek placed AAC audio after its cue, so each source is now trimmed by a filter instead, and an AAC test tone lands within 2 ms. - A test render slowed from 6.9 to 9.1 seconds on one worker. A bisect found a change that synced clips before every step. Syncing skipped frames at the end of their step brought it back to 6.9 seconds. - Ctrl-C could take 30 seconds to stop a render, because a capture in flight waited out its frame deadline. Interrupting now ends every wait at once, and the tester's page stops in 0.05 seconds. ## Where it falls short WebGL pages can render slowly. Web Audio, SVG animation (SMIL) and iframes run outside the virtual clock, so they won't stay in sync. The text check can't read text inside a canvas, an image or a video. Its security checks reduce exposure to a hostile page, but they don't sandbox it. MiniFrames and its companions are private for now. If you want help building a tool like this for your team, [start a brief](/#contact). [ All writing ](/blog) --- # The 30+ tools in my AI development stack Source: https://workflows.diy/blog/my-ai-development-power-stack - Why: To explain what each tool in my AI development stack does and why I use it, for technical and non-technical readers. - Challenge: Choosing and combining many tools in a field that changes quickly. The post groups the tools by the stage of development they serve, and it now includes NotebookLM and OpenRouter. - Outcome: A practical stack that combines local AI, flexible model access, web and Python frameworks, automation and core programming tools. - Learnings: Local AI on NVIDIA GPUs with Ollama is key to private AI. OpenRouter and Perplexity give access to many models. Vue 3, Nuxt 3 and FastAPI build the applications, n8n automates them, and VS Code, Python, JavaScript, Docker and GitHub support the daily work. - AI approach: I use these tools with AI assistants such as Google Gemini for code generation. Humans orchestrate the tools and AI partners to build the solutions. - Models used: This post outlines my personal toolkit of over 30 technologies, from AI models and local hardware to development tools and cloud services, used in daily AI application and workflow automation work. [ All writing ](/blog) May 24, 2025 # The 30+ tools in my AI development stack The 30+ tools behind my AI applications and workflows run from local Ollama models on NVIDIA GPUs to services such as OpenRouter, Perplexity and n8n. These are the tools I use every day to build AI applications and automated workflows. Some are software, some are cloud services, and some are hardware. This is not a complete list. For each tool, I explain what it does and why it is in my stack. ## AI models I use these services to generate text, analyze information and understand images. - Google AI Studio is Google's online platform for building with its latest models, such as Gemini 2.5 Pro Preview 05-06. It is my main tool for deep, iterative work with Google's models. Gemini 2.5 Pro's context window and multimodal support matter most for AI-first development. ([ai.google.dev/aistudio](https://ai.google.dev/aistudio)) - Ollama runs open-source LLMs such as Llama 3 and Mistral directly on your computer. I use it for local AI development. It keeps data private, works offline and keeps experiments cheap. ([ollama.com](https://ollama.com/)) - The OpenAI API gives developers access to GPT-4o (text and vision), the GPT-4.1 series (developer-focused), OpenAI o3 and o4-mini (reasoning models), DALL·E 3 (image generation) and Whisper (speech-to-text). The Assistants API is useful for agent-style experiences. I use it for cloud LLM tasks that need a specific model's strengths. ([platform.openai.com](https://platform.openai.com/)) - The Gemini APIs give programmatic access to Google's Gemini models, such as 2.5 Pro and Flash, for custom applications. I use them as another route to Google's multimodal models. ([ai.google.dev/docs/gemini_api_overview](https://ai.google.dev/docs/gemini_api_overview)) - OpenRouter is a single API gateway to LLMs from OpenAI, Anthropic, Google, Mistral and open-source providers, with one key and one request format. I use it to compare and switch models without rewriting integration code. It is also useful for A/B tests and for workflows that route each task to a different model. ([openrouter.ai](https://openrouter.ai/)) - Hugging Face is a hub for the open-source AI community, with models, datasets and tools. I use it to find and test open-source models. ([huggingface.co](https://huggingface.co/)) - Perplexity AI is an AI search engine that answers questions with cited sources. Pro users can also query models such as GPT-4 Omni, Claude 3.5 Sonnet/Haiku, Grok-2 and Gemini 2.0 Flash, without a separate API key for each. I use it for quick research and for getting up to speed on new topics. Its citations help me check claims. ([perplexity.ai](https://www.perplexity.ai/)) ## Local hardware Local AI depends on hardware as much as software. - I use an NVIDIA RTX 4090 desktop GPU and an RTX 4070 laptop GPU. The 4090 handles heavy work, and the 4070 is for portability. Both run larger Ollama models quickly and privately, which speeds up private AI development and testing. (Link for NVIDIA AI: [nvidia.com/en-us/ai-data-science/](https://www.nvidia.com/en-us/ai-data-science/)) - The GPUs and Ollama are central to my local AI work, and I plan a separate post on that setup. ## Code and data These tools write code and prepare the data behind AI. - Python is a programming language widely used in AI and data science. I use its libraries for AI and machine learning, Pandas for data work and FastAPI for web APIs. ([python.org](https://www.python.org/)) - Pandas is a Python library for data analysis, like a spreadsheet in code. I use it to load, clean, transform and analyze structured data for AI models. ([pandas.pydata.org](https://pandas.pydata.org/)) - JavaScript is the language of web browsers, and TypeScript adds optional static typing. I use both for frontend work with Vue.js and Nuxt.js, and for Node.js environments such as Electron. (JavaScript: [developer.mozilla.org](https://developer.mozilla.org/en-US/docs/Web/JavaScript), TypeScript: [typescriptlang.org](https://www.typescriptlang.org/)) - VS Code is my main code editor. Copilot is an AI pair programmer that suggests code, which speeds up my coding. (VS Code: [code.visualstudio.com](https://code.visualstudio.com/), Copilot: [copilot.github.com](https://copilot.github.com/)) ## Application logic Tools that structure applications and manage complex operations. - FastAPI is a fast web framework for building APIs with Python. I use it for Python backends that serve AI models or run workflows. ([fastapi.tiangolo.com](https://fastapi.tiangolo.com/)) - Pydantic is a Python library for data validation and settings, based on type hints. I use Pydantic models to define the data sent to LLMs, for example for function calling or structured prompts. I also use them to validate the JSON that LLMs return, which makes their output more predictable and less prone to errors. That matters most when building agents or any system that depends on reliable AI data. (Links: [pydantic.dev](https://pydantic.dev/) and [Instructor](https://python.useinstructor.com/)) ## Workflow and integration Tools that connect systems and automate sequences of tasks. - n8n is an extendable, source-available workflow automation tool. It is the hub for my automations, which tie together APIs, AI models and services. ([n8n.io](https://n8n.io/)) - Google Workspace is Google's suite of productivity tools, including Gmail, Sheets and Drive. I use it as triggers and actions in n8n workflows, and for AI integration. ([workspace.google.com](https://workspace.google.com/)) - Telegram is a messaging app with a bot API. I use it to build custom AI chatbots and notification systems connected to n8n. ([telegram.org](https://telegram.org/)) ## User interfaces How users interact with the AI applications I build. - HTML, CSS and JavaScript are the building blocks of every website and web application. I use them for any web frontend. ([developer.mozilla.org/en-US/docs/Web](https://developer.mozilla.org/en-US/docs/Web)) - Vue 3 is a progressive JavaScript framework for building user interfaces. I use it for reactive, component-based web frontends. ([vuejs.org](https://vuejs.org/)) - Nuxt 3 is a full-stack framework built on Vue.js that handles server-side rendering, static sites and more. I use it for Vue applications that need server-side features or static generation. ([nuxt.com](https://nuxt.com/)) - Electron is a framework for building native desktop apps with web technologies. I use it to build cross-platform desktop AI apps that use local resources securely. ([electronjs.org](https://www.electronjs.org/)) - Streamlit is an open-source Python library for web apps in machine learning and data science. I use it to build interactive UIs and dashboards for AI tools in Python quickly. ([streamlit.io](https://streamlit.io/)) ## Deployment and infrastructure Tools that put applications online, keep them running and connect them securely. - Vercel is a cloud platform for frontend frameworks and static sites. I use it to deploy frontend applications quickly. ([vercel.com](https://vercel.com/)) - Cloudflare provides web performance, security and Zero Trust networking tools. I use it to secure web apps, improve performance and create Cloudflare Tunnels that expose local services. ([cloudflare.com](https://www.cloudflare.com/)) - Docker is a platform for developing, shipping and running applications in containers. I use it to package applications with complex dependencies. ([docker.com](https://www.docker.com/)) - Google Cloud Console is the console for Google's cloud computing services. I use it when a project needs the wide range of services it offers. ([console.cloud.google.com](https://console.cloud.google.com/)) - GitHub is a web platform for Git version control and collaboration. It is the backbone of all my code, covering version control, collaboration and CI/CD. ([github.com](https://github.com/)) ## Data ingestion and parsing Tools that prepare data for AI and improve how I work with LLMs. - Crawl4AI is a Python library for crawling websites and extracting content for AI. I use it to get clean, AI-ready content for custom knowledge bases. ([docs.crawl4ai.com](https://docs.crawl4ai.com/)) - LlamaParse is a LlamaIndex service that parses complex documents such as PDFs, including their layout. I use it for OCR and parsing of difficult PDFs before LLM ingestion. ([docs.llamaindex.ai/llamaparse/](https://docs.llamaindex.ai/en/stable/)) - code2prompt is a command-line tool that prepares codebases as context for LLMs. It gives AI models large, relevant code context. ([code2prompt.dev/docs/welcome/](https://code2prompt.dev/docs/welcome/)) ## Ideas, knowledge and community Tools for keeping up, brainstorming, managing knowledge and connecting with others. - NotebookLM is a Google research and writing assistant. It grounds its answers in up to 50 large sources, including PDFs, text, Google Docs, websites and YouTube transcripts. It also makes an audio overview of your sources. I use it to synthesize information from several sources, ask questions about my documents and listen to audio summaries. Its grounding in sources is key to accuracy. ([notebooklm.google.com](https://notebooklm.google.com/)) - tldraw is an online whiteboard for sketching and diagramming. I use it to whiteboard architectures and ideas. ([tldraw.com](https://www.tldraw.com/)) - NapkinAI is an AI tool for capturing and connecting ideas. I use it to connect loose thoughts for long-term project ideas. ([app.napkin.ai](https://app.napkin.ai/)) - Skool is a platform for building online communities. It suits communities focused on AI and workflow automation. ([skool.com](https://www.skool.com/)) - YouTube is the video-sharing platform, and a source of tutorials, AI news and insights. ([youtube.com](https://www.youtube.com/)) ## How the tools work together In practice the tools form a chain. I might research a topic in Perplexity AI, synthesize the findings in NotebookLM and sketch a first workflow in tldraw. Then I build a local AI microservice with Python, FastAPI and Ollama on my NVIDIA GPU, and containerize it with Docker. An Electron app using Vue 3 or Nuxt 3 could provide the desktop UI, or a Streamlit app could handle rapid prototyping. Crawl4AI or LlamaParse could gather data for the service. An n8n workflow could orchestrate the process and push results to Google Sheets. Cloudflare manages secure external access. All code lives on GitHub. A user-facing web component could deploy on Vercel. OpenRouter gives flexible model access when the work needs it. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Choosing n8n by codability and integrability Source: https://workflows.diy/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first - Why: To help organizations choose AI tools by code control (codability) and system connections (integrability), starting from n8n's own AI agent development report. - Challenge: Choosing AI development tools that match strategic goals and an AI-first approach. The post shows how n8n balances deep customization with broad connectivity. - Outcome: A way to judge AI tools like n8n against specific use cases and an AI-first approach. - Learnings: AI adoption depends on strategic leadership and an AI-first shift. Codability and integrability guide the choice of tool. n8n supports both, which suits AI-first developers. - AI approach: The post argues that developers should orchestrate AI. That requires tools with enough control (codability) and connections (integrability), and it draws on n8n's research on AI agents. - Models used: This post explains how an AI-first development approach shapes the choice of AI tools like n8n. It uses codability and integrability as the two tests. [ All writing ](/blog) May 23, 2025 # Choosing n8n by codability and integrability Two tests separate AI automation tools: codability, meaning how much control the tool gives through code, and integrability, meaning how well it connects to your business systems. ## AI is already reshaping everything At [workflows.diy](https://workflows.diy/), we build on an "AI-first" philosophy. AI is the primary engine of the software development lifecycle. The developer becomes an "AI orchestrator" or "AI lead developer" who guides the systems that build, test and deploy code. Doing this well takes leadership from the top and a different technical approach to building and deploying solutions. Platforms like [n8n.io](https://n8n.io/) offer tools for [AI automation and agent development](https://n8n.io/ai/). Tool choice matters most when you build AI agents and automated workflows. Our review of enterprise AI agent development tools draws on [n8n's AI Agent Development Tools report](https://n8n.io/reports/ai-agent-development-tools/). It points to two capabilities: codability and integrability. ## Workflows and agents Before comparing tools, it helps to separate two kinds of AI application. - An AI workflow puts an LLM inside structured, conditional automation logic. It is an AI-enhanced version of a traditional automation. - An AI agent acts more autonomously. It can direct its own purpose and choose which tools or functions to use to reach a goal. LLM outputs are non-deterministic. To build reliable applications with workflows or agents, you need deterministic logic that controls their inputs and outputs. Many AI agent development tools now use workflow-based GUIs for this. The visual interfaces let you write that control logic with little upfront training. ## Testing tools for codability and integrability Codability and integrability separate the options for complex agentic systems. ## Codability gives precise control over AI agents Codability describes a tool's code-based capabilities and extensibility. It gives developers fine-grained control over an AI agent's behavior, including how they configure models, use external frameworks and manage AI resource use. Strong codability includes: - Support for native Integrated Development Environments (IDEs). - Flexibility with multiple programming languages. - Version control integration. - Integration with AI frameworks like LangChain or LlamaIndex. - Built-in features for agentic systems, such as reasoning loops, routing, memory management and function calling. Tools that score high on codability let you customize an agent's core logic and how it talks to models. As an AI-first developer, I use AI for 100% of my code generation. Tools with strong codability still matter when they offer a GUI, because they provide hooks, control points and transparency. The AI needs a structure it can see, read and change. ## Integrability connects AI to your business systems Integrability measures how well a tool fits into existing business processes and technical systems. It lets an agent push and pull data from databases, work with CRM and ITSM platforms, connect to security tools and run in DevOps pipelines. High integrability shows up as: - Mature connections to your existing technology stack. - Support for many triggers, such as webhooks, scheduled events and chat interfaces. - Swappable AI components, so you can change models. - Utility tools and pre-built connectors. - Custom integrations. - A library of ready-made content and templates. ## Matching tools to your use case No single tool fits every organization. The right choice depends on your use case, your existing technical stack and your AI goals: - Higher integrability, lower codability. Established workflow automation platforms that added AI features fit here. They suit complex, often legacy, IT stacks and simpler agents such as support chatbots or document summarization, where breadth of integration matters more than depth of agent logic. (Examples: Workato, Camunda, Make.) - Higher codability, lower integrability. These are AI-native tools built for developing sophisticated agents. They give a high degree of control over agent behavior, which suits agentic systems that focus on web resources, SaaS applications and document processing. Connecting them deeply to a multifaceted enterprise IT stack can take considerable custom effort. (Examples: Vellum, Dify, Langflow, Flowise.) - High on both integrability and codability. These tools offer versatile capabilities. They usually need more investment in training and onboarding. They suit highly complex workflows that connect deeply with your existing stack. [n8n](https://n8n.io/) is noted for strong capabilities in both areas, which makes it a strong candidate for sophisticated AI-first development. - Low on both integrability and codability. These tools take a lightweight, user-friendly approach that needs less training. They suit startups and small businesses that want basic AI agents with moderate configurability. (Examples: Stack AI, Relay.) Comparing tools by theoretical capability, such as Turing completeness, is less useful than comparing native, out-of-the-box features. The criteria in the [n8n report](https://n8n.io/reports/ai-agent-development-tools/) focus on these practical capabilities. ## Strategy, people and tools drive AI success AI adoption is about more than buying tools. It depends on aligning strategy, people and tools. - AI needs executive sponsorship and strategic direction from the CEO. The CEO's vision shapes how AI fits into the core business. Building an AI-first culture often takes dedicated leadership, such as a Fractional Chief AI Officer (CAIO). - Technical implementation depends on a new kind of developer. The AI-first developer is an orchestrator who guides AI, not only a writer of code. Their value lies in AI collaboration, prompt engineering, critical thinking and validating AI-generated output. They need broad foundational tech knowledge to guide and validate AI, even when they do not code from scratch. My project journals and blog posts show this. Google Gemini has built whole applications and integrations across Vue 3, Supabase, FastAPI, Docker, Tkinter, Three.js, Quasar and Electron, based on my architecture and iterative prompts. Choosing an AI agent development tool means balancing codability for control against integrability for connection. The choice should match your AI strategy and what your development team can do. Many modern tools, [n8n](https://n8n.io/) included, use workflow-based GUIs. Those suit an AI-first focus on defining logic and orchestration, rather than writing boilerplate code. ## Partnering for your AI work Turning AI tools into business value takes technical depth and strategic insight. Basic knowledge is easy to find. Applying it to your context takes dedicated support. At [workflows.diy](https://workflows.diy/), I combine hands-on experience as an AI-first software developer with a CEO-centric approach to AI strategy. I coach you and your team so you can own your AI initiatives. We pick tools for your needs, which often include [n8n's AI capabilities](https://n8n.io/ai/). If you are choosing AI tools or structuring an AI workflow team, [get in touch](/#contact). [ All writing ](/blog) --- # Our Jina.ai multipage scraper passes 10,000 n8n runs Source: https://workflows.diy/blog/n8n-jinaai-multipage-scraper-10k-milestone - Why: To give users a simple way to scrape and organize content from many pages, with clean Markdown output and easy Google Drive storage. - Challenge: Collecting data from many web pages by hand is slow, error-prone and hard to scale. Formatting and organizing the extracted content adds more work. - Outcome: An n8n workflow that reads a sitemap, extracts clean content with Jina.ai (no API key required), converts pages to Markdown and saves each one as a Google Drive document. The workflow has run more than 10,000 times in the n8n community. - Learnings: No-code automation combined with accessible AI services like Jina.ai makes tedious problems easy to solve, which drives adoption. n8n highlighted the milestone, which points to the workflow's real-world use and reliability. - AI approach: The workflow uses Jina.ai's AI-based extraction to pull content from web pages and convert it to clean Markdown. Users get this without handling the scraping details inside their n8n automations. - Models used: This n8n workflow uses Jina.ai's web scraping to extract content from many pages, without managing AI models directly. It reads a sitemap and turns each page into clean Markdown. [ All writing ](/blog) May 18, 2025 # Our Jina.ai multipage scraper passes 10,000 n8n runs Our Essential Multipage Website Scraper with Jina.ai template has run more than 10,000 times in the n8n community. It reads a sitemap, pulls each page as clean Markdown with Jina.ai, and saves the results to Google Drive. ## Over 10,000 executions My n8n workflow template, [Essential Multipage Website Scraper with Jina.ai](https://n8n.io/workflows/2957-essential-multipage-website-scraper-with-jinaai/), has passed 10,000 executions in the n8n community. The template in the n8n editor. Nik at n8n emailed me. He wrote that the template "has now been executed over 10,000 times" and that "only very few templates ever get the honor to join this club." That is an honor. It shows the workflow is useful to people who automate web scraping. Thank you to everyone in the n8n community who has used it and given feedback. ## Collecting data from many pages is slow You may need information from several pages on a site for research, content aggregation, competitive analysis or backups. Doing it by hand means copy-pasting, keeping formatting intact and organizing files. It is slow and error-prone. If you need to do it regularly, it becomes a bottleneck. ## Automated scraping with clean output I designed the Essential Multipage Website Scraper with Jina.ai to automate the process, from finding pages to storing their content in a structured way. It works like this: - The workflow processes sitemaps. Give it the site's sitemap XML, and it extracts the individual page URLs for you. - The workflow scrapes with [Jina.ai](https://jina.ai/), which fetches a page's main content. Basic use needs no API key, only a prefix on the URL. - Jina.ai converts each page to clean Markdown, not messy HTML. Markdown suits readability, portability, further processing and pasting into knowledge bases. - Each page becomes its own Google Drive document, named "URL - Page Title" so it is easy to find. - Set the target sitemap, filter for specific topics or pages, and limit the batch size. The default batch is 20 pages. - A Wait node adds a delay between requests, which helps avoid overloading the target site. Use the workflow responsibly and respect each site's terms of service. ## Why it resonated Over 10,000 executions suggest the workflow solves a common problem for n8n users. I think its popularity comes from these points: - It solves a real pain point, since multi-page web scraping is a frequent need. - The Jina.ai integration needs no API key, which lowers the barrier to entry. - n8n's visual interface makes the workflow easy to configure and run. - Clean Markdown and organized Google Drive storage are useful right away. This shows how no-code and low-code tools like n8n can make complex tasks accessible when paired with capable services. ## Try the workflow If you scrape pages by hand, try [Essential Multipage Website Scraper with Jina.ai on the n8n templates gallery](https://n8n.io/workflows/2957-essential-multipage-website-scraper-with-jinaai/). Set it up, connect your Google Drive, and save your time. Thank you to the n8n team and the community. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Making n8n workflows production-ready Source: https://workflows.diy/blog/n8n-production-playbook-security-retries-errors-version-control - Why: To give a practical guide to production-ready n8n workflows, focused on security, retries, error handling and version control. - Challenge: Many n8n users build workflows that work but break easily. The challenge is to move from a working prototype to a secure, maintainable system that handles real-world failures. - Outcome: A playbook called "From Fragile to Fortified" with practical steps for securing webhooks, adding retries, centralizing error handling and using version control with Git. - Learnings: Production readiness in n8n rests on four areas. Security comes first, and Header Auth is the starting point. Retries with exponential backoff and non-retryable error definitions build resilience. A central Error Trigger workflow gives visibility. Version control, from JSON backups to full Git integration, supports reliable maintenance and rollbacks. - AI approach: The post is a best-practices guide with an AI-first angle. It covers how to manage credentials for AI services like OpenAI securely, and how to build workflows that handle the unpredictability of LLM API calls. - Models used: Synthesizes best practices for n8n, including AI integrations with models like OpenAI and Google Gemini, drawing from official documentation and community experience. [ All writing ](/blog) June 10, 2025 # Making n8n workflows production-ready A production n8n workflow needs header authentication on its webhooks, retries for temporary failures and a central error workflow. In our experience, a single retry resolves 60-70% of temporary API and LLM failures. A production n8n workflow needs four things: security, retry logic, error handling and version control. APIs go down, data formats change and errors show up without warning. My own work deploying [complex AI and data workflows](/blog/my-ai-development-power-stack) taught me that skipping these foundations leads to headaches. ## 1. Lock down your entry points A workflow is only as secure as its weakest entry point. Start with [securing your n8n instance](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/#supported-authentication-methods) and workflows, especially those triggered by webhooks. ### Securing your webhook triggers The most common vulnerability I see is a naked webhook. A webhook without authentication is a public endpoint, and anyone who finds its URL can trigger your workflow. The immediate fix is Header Authentication, which acts as a lock on the trigger. Use [Header Authentication on your Webhook node](https://docs.n8n.io/integrations/builtin/credentials/webhook/). It works like a digital bouncer. You create a secret API key in n8n and require every incoming call to send that key in a specific header, such as x-api-key or X-N8N-API-KEY. If the key is missing or wrong, n8n denies entry, and the workflow never starts. ### Handling outgoing API credentials For API calls to other services, such as OpenAI, Google or your internal tools, don't hardcode keys in the HTTP Request node. Use n8n's [Credentials](https://docs.n8n.io/credentials/add-edit-credentials/) system instead, in this order of preference: - Use predefined credentials first. For services n8n supports officially, like OpenAI or Airtable, create the credential once in your n8n instance. When you configure a node like the [HTTP Request node](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/), select the "Predefined Credential Type" and choose your saved credential. n8n injects the key, so you never see or paste the raw key into the workflow. - Use a Set node if no predefined credential type exists. Map the API key to a variable in the Set node, then reference that variable in the HTTP Request node's header with n8n's [expressions system](https://docs.n8n.io/build/work-with-data/expressions-versus-data-nodes). The raw key stays out of the final node's configuration. OAuth2 is worth understanding too. It is often more than internal automation needs, but it is the standard when you need to [allow other users to grant your application access to their accounts securely](https://docs.n8n.io/integrations/builtin/credentials/google/oauth-generic/). ## 2. Build in retries Things break. Third-party APIs go down, LLMs have brief failures, and network connections drop. A production workflow plans for this. Experience suggests that a single retry resolves 60-70% of temporary issues from API or LLM failures. It is the highest-impact, lowest-effort resilience tactic you can implement. Most n8n nodes have a "Retry on fail" option in their settings. Set it to make 2 or 3 more attempts, a few seconds apart. ### Exponential backoff Exponential backoff handles intermittent failures. It increases the delay between retries, for example 1s, then 2s, then 4s. This gives temporary issues like rate limiting time to clear without hammering the service. A community workflow shows this logic for ["Retry on fail" except for known errors](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/common-issues/#retry-on-fail). Knowing when not to retry matters just as much. Permanent failures such as "Authentication Failure" or "Insufficient Funds" won't fix themselves on a second try. Define these as Non-Retryable Errors in the node's retry policy, so the workflow doesn't get stuck in a futile loop. For these failures, use a fallback, such as [a different LLM provider](/blog/openrouter-ai-polyamory-mastering-your-llm-harem), or log the error for manual intervention. ## 3. Set up central error handling A workflow that fails silently is a problem waiting to happen. You often learn about failures only when a user complains or a downstream process breaks. A central [error handling](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.errortrigger/) system gives you visibility. Create a separate workflow that starts with an Error Trigger node. Its only job is to catch and process failures from your other production workflows. In the settings of each main workflow, link it to this central error handler. The Error Trigger provides the failed workflow's name and execution URL, the node that errored, the full error message and the stack trace. That data is enough to build automated logging and alerting. You can then use this data to: - Log everything. Automatically populate a [Google Sheet or database with every error](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.googlesheets/). That gives you one central log for analysis, without hunting through execution histories. - Send proactive alerts. Trigger notifications via Slack or email with the key details and a link to the failure, so you can act right away. For more context, create your own errors. The Stop And Error node fails a workflow under specific conditions, with a custom message such as "Error: Input data from Step 1 was malformed." Your error handler captures that message, which shows where and why the process failed from a business logic perspective. ## 4. Use version control Version control is the undo button for an entire workflow. It separates one-off automations from production systems. ### Downloading and storing JSON files The simplest version control is a consistent naming convention. When a workflow is tested and ready, save it with a version number, such as "Social Media Publisher v1.0." Download the workflow's JSON file and store it in a safe, organized place, such as a dedicated [Google Drive folder](https://n8n.io/workflows/2983-automated-workflow-backups-to-google-drive/). If an update (v1.1) breaks something, import the v1.0 JSON onto a new canvas to revert to the last known good state. ### Why Git is the better method Storing JSON files is a good start. Git is the enterprise-grade option, and n8n's [source control and environments](https://docs.n8n.io/source-control-environments/) features are built around this principle. They provide these capabilities: - Branching and merging. Develop new features in isolated branches, without touching the production version. - Clear history. Git tracks every change, showing who changed what, when and why, which helps with debugging. - Conflict management. Git helps manage conflicts when several people edit the same workflow. - True rollbacks. Git reverts only the specific changes that caused a problem. To start, automate this with a template such as [Backup Workflows to Git](https://n8n.io/workflows/2983-automated-workflow-backups-to-google-drive/). Many of the community's most [popular workflows](/blog/top-n8n-ai-automation-workflows-by-popularity) rely on these practices. To see some of these principles in action, explore my full library of [n8n workflow templates](https://workflows.diy/n8n-workflows/all). If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Community tips and pitfalls for n8n workflows Source: https://workflows.diy/blog/n8n-unlocking-potential-community-tips - Why: To help n8n users apply community knowledge to common automation problems, extend n8n with custom nodes and AI integrations, and build more reliable workflows. - Challenge: Distilling diverse Reddit conversations into one actionable guide. The topics cover workflow reliability, spam prevention, custom node creation, AI integration, data handling, HTTP request troubleshooting and scaling. - Outcome: A guide with community tips on reliable workflows, custom nodes, AI integration, data handling, debugging common issues and building a portfolio with n8n. - Learnings: The n8n Reddit community shares useful practical knowledge. Key points include open sharing, custom nodes for extending n8n, AI integration such as PDF processing, efficient data reuse, and fixes for HTTP errors and trigger issues. Multi-tenancy and portfolio building matter for advanced users. - AI approach: An n8n workflow reads the r/n8n RSS feed and uses an AI agent (LLM) to find common themes and draft this post. It shows an AI-first approach to content built from real-time community discussions. - Models used: This blog post synthesizes key discussions and challenges from the n8n Reddit community, with practical insights, solutions and best practices for n8n users of all levels. An AI-powered n8n workflow that monitors the r/n8n subreddit generated the content. [ All writing ](/blog) May 26, 2025 # Community tips and pitfalls for n8n workflows n8n users on Reddit keep hitting the same problems, from PDFs with tables that plain text extraction cannot read to reusing data from earlier nodes. From Google Sheets automations to AI chat systems and OCR for physical invoices, n8n users bring up many of the same problems on Reddit. This post covers the most common themes and a fix for each. ## Building reliable, spam-free workflows Sharing workflows and helping others is central to the n8n community, and quality and transparency matter. Recent posts point to a new policy against "DM me for workflows" or "email signup for templates." Open sharing of code and detailed instructions is encouraged, both for helping one another and for building a trustworthy community. When you ask for help or share a workflow, include clear descriptions and public code snippets. That improves transparency and makes troubleshooting easier for everyone. ## Custom nodes and extending your toolbox Many users extend n8n's capabilities beyond the built-in integrations. One user rebuilt a Telegram bot that talks to AliExpress, even though n8n has no dedicated AliExpress node. A custom node speeds up development for your own projects and can help the community too. Tips for creating custom nodes: - Start with simple use cases to learn n8n's node infrastructure. - Read the developer documentation and existing GitHub repositories for community examples. - Share your custom node with documentation, so others can reuse it and potentially cut their development time. ## Integrating AI across workflows Whether you want ChatGPT to summarize a batch of PDFs or run an AI-powered messenger bot, a few considerations apply. ### Using ChatGPT with document workflows One Reddit user asked how to process bank statements attached to emails. Complex PDFs with tables don't work well with simple text extraction. Instead: - Convert PDFs to structured formats, such as JSON, using specialized tools or OCR services like Google Vision, Tesseract or Mistral OCR. - Build an n8n flow that triggers on a new email, extracts the PDF, converts it, and passes the JSON to an AI node for summarization. ### AI workflow maintenance and cross-platform translation FlowMod.io shows how AI can generate and maintain workflows. Projects like it bridge workflows across platforms, such as n8n and Make, and some offer auto-maintenance when logic changes. These ideas can inspire workflows that detect and fix issues automatically, which helps when you scale automation for client work. ## Data reuse and advanced data handling Reusing data from an earlier node is a common challenge. Whether you aggregate tags from a database query or pass API responses to an AI summarizer, you need to understand n8n's data model. Practical tips: - Use the Code node to manipulate or extract values from previous nodes. If JavaScript isn't your first language, copy simple examples from the n8n community and adapt them. - Use expressions, written in double curly braces, to reference node outputs directly. This often removes the need for code in simple data transfers. ## Workflow reliability, HTTP requests and trigger issues Some users hit problems with HTTP Request nodes, especially with scrapers or external APIs. One workflow that used apify for scraping returned errors because its HTTP request needed "POST" instead of "GET." Try these steps: - Check the target service's API documentation to confirm the right method, GET or POST. - Use test nodes and log outputs from the HTTP Request node to debug parameter issues. - If an external API changes often, wrap the request in error-handling loops or use fallback nodes to keep the workflow stable. Another common problem is duplicate triggers that cause repeated executions, for example when social media posts are duplicated. In that case: - Check the trigger configuration and confirm that event filters and deduplication settings are set. - Review workflow logs for unintended parallel executions or overlapping triggers. ## Multi-tenant architecture and building a portfolio Teams scaling their solutions ask about multi-tenant architecture. An example is an AI chat system that restricts access by a user's company or department. It needs careful design: - Keep security barriers in place. Filter and isolate each tenant's data in the backend before it reaches the AI agent. - Weigh the architecture trade-offs. A Frontend → Backend → n8n route might centralize control and logging better than a direct Frontend → n8n approach. - Use n8n's built-in security features, and consider enhanced prompt controls on AI nodes so tenant boundaries hold. Portfolio building comes up often for people new to n8n: - Offer to build simple projects for free in exchange for testimonials. - Build workflows for your own business to create use-case examples. - Post short video demos, made with tools like Loom, on freelance marketplaces to show your workflow concepts. ## Learning and resource recommendations If you come from IT and want advanced resources without days of basic programming tutorials, check out: - n8n's official documentation for advanced topics. - Community-built cheat sheets and GitHub repositories on best practices, custom node development and complex workflow design. - Forums and Reddit threads, where users share experiences and code snippets. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Running Ollama on NVIDIA GPUs for local AI Source: https://workflows.diy/blog/nvidia-gpu-ollama-local-ai-powerhouse - Why: Explains why an NVIDIA GPU and Ollama suit running LLMs locally. Local models keep data on my machine, avoid API costs during experiments and give the apps I build direct access to models. - Challenge: Large local models need a GPU with enough compute and VRAM, plus a platform that other applications can call. The post also covers Ollama's native thinking support and structured outputs, which work best on capable hardware. - Outcome: Shows why the NVIDIA GPU and Ollama pairing works for local AI, using my Desktop AI Assistant and n8n workflows as examples. The setup keeps data private and gives low-latency responses for interactive apps. - Learnings: Local AI runs well on consumer NVIDIA RTX GPUs. Ollama manages local models and exposes them through an HTTP API that n8n and custom apps can call. Its thinking output and structured outputs make the code that uses them simpler. - AI approach: The post reflects my AI-first approach. Gemini wrote the Desktop AI Assistant, which calls Ollama models on my own GPUs, so one AI builds software that talks to other AI models. - Models used: Local models served by Ollama on my NVIDIA RTX GPUs. Google Gemini 2.5 Pro Preview is the primary code generator for the applications that run on this stack. [ All writing ](/blog) May 31, 2025 # Running Ollama on NVIDIA GPUs for local AI I run LLMs and vision models on an RTX 4090 and an RTX 4070 with Ollama, which keeps data on my machine and avoids API call costs. The same setup runs my Desktop Assistant and local n8n workflows. ## The local AI-first approach I run LLMs and vision models on my own hardware, with two NVIDIA RTX GPUs: an RTX 4090 in my desktop and an RTX 4070 in my laptop. [Ollama](https://ollama.com/) runs the models on them. This pair is the core of my local AI work, as I describe in [The 30+ tools in my AI development stack](/blog/my-ai-development-power-stack). My development approach is [AI-first](https://www.workflows.diy/ai-first-philosophy). AI is the main engine for building software, and my role is that of an "AI orchestrator." The [Desktop AI Assistant](/blog/anatomy-desktop-ai-assistant-stack-features) is one result. Google Gemini 2.5 Pro Preview built it entirely. ## Why run AI locally? Local processing has five practical advantages for my work. - Sensitive data stays on my machine. That is non-negotiable for many projects. - Apps run without a constant internet connection. - Local models avoid API call costs, which makes experiments cheap. That matters when the AI is generating and testing code. - Responses can arrive faster than a round trip to a cloud server, which helps interactive apps. - Direct access to local models lets me design tightly integrated systems. Gemini builds the interfaces that call them. This local-first approach supports the private, multimodal experience I describe in "[The tech stack behind our desktop AI assistant](/blog/anatomy-desktop-ai-assistant-stack-features)." ## NVIDIA RTX GPUs supply the compute Running capable LLMs is compute-heavy. My NVIDIA RTX GPUs do that work, as I covered in [The 30+ tools in my AI development stack](/blog/my-ai-development-power-stack). - The CUDA cores and Tensor Cores are built for the parallel work inside deep learning models. That means faster inference and larger models. - Modern LLMs are memory-hungry. The VRAM on an RTX 4090 lets me load larger models, or several smaller ones at once. Without enough VRAM, models swap to system RAM, which would cripple performance. - NVIDIA's drivers and libraries, including CUDA and cuDNN, plus wide framework support make these GPUs the default choice for serious AI work. The GPUs make these local projects practical. Gemini can build apps on models that were cloud-only until recently. ## Ollama runs and manages local models The GPUs provide the raw power. [Ollama](https://github.com/ollama/ollama) manages and runs open-source LLMs and vision models, such as Llama 3.2, DeepSeek, Gemma3, Mistral, Phi4 and LLaVA. The [Ollama Library](https://ollama.com/library) lists the available models. Setup that used to be complex now takes a few commands. - Pulling and running a model takes one command each: ollama pull llama3.2 and ollama run llama3.2. - Ollama exposes a local HTTP API. My FastAPI backend for the Desktop AI Assistant, which Gemini wrote, uses it to list models, generate responses, stream tokens and call vision models. - Ollama runs on macOS, Linux and Windows. - The range of supported models grows constantly. - The local API works with automation platforms such as [n8n.io](https://n8n.io/). I have shared several n8n workflows that use it: The [Private and Local Ollama Self-Hosted AI Assistant](https://n8n.io/workflows/2729-private-and-local-ollama-self-hosted-ai-assistant/) workflow turns a local [n8n](https://n8n.io/) instance into a chat interface for any local Ollama model. It processes messages on your machine and returns formatted replies, with no cloud dependencies. Setup means installing n8n and Ollama, downloading a model, adding Ollama API credentials if the defaults do not work, then importing and activating the workflow. - The [Private and Local Ollama Self-Hosted + Dynamic LLM Router](https://n8n.io/workflows/3139-private-and-local-ollama-self-hosted-dynamic-llm-router/) workflow routes each prompt to a suitable local model, such as qwen2.5-coder for code or llama3.2-vision for images. It keeps conversation memory and processes everything locally. Setup means ensuring Ollama is running, pulling the models, configuring the API in n8n and activating the workflow. You can change the router's decision framework and system prompts. - My [Compare Local Ollama Vision Models for Image Analysis using Google Docs](https://n8n.io/workflows/3185-compare-local-ollama-vision-models-for-image-analysis-using-google-docs/) workflow downloads an image from Google Drive, runs it through several Ollama vision models and saves detailed markdown descriptions to a Google Doc. It suits image description and structured data extraction in real estate, marketing and research. Setup means running Ollama, pulling the vision models, adding Google Drive and Docs credentials in n8n and giving it the image file ID. You can change the image source, prompts and post-processing. These workflows show how local models power automated tasks. For my AI-first workflow, the Ollama API is the central piece. Gemini can write the Python client code that connects Ollama to the backend of the [Desktop AI Assistant](/blog/power-stack-desktop-ai-assistant). I can also connect Ollama directly to n8n for local automations. ## The Desktop AI Assistant runs on this stack The NVIDIA GPUs and Ollama work together in my [Desktop AI Assistant](/blog/anatomy-desktop-ai-assistant-stack-features). - Chat and vision features, described in [Anatomy](/blog/anatomy-desktop-ai-assistant-stack-features), call Ollama models on my RTX 4090. Gemini wrote the Electron TypeScript services that call the FastAPI backend, and the backend calls Ollama for inference. - For retrieval augmented generation (RAG), as described in [Crawl4ai RAG in my Electron AI assistant](/blog/crawl4ai-electron-rag-integration), the app retrieves chunks from ChromaDB. An Ollama-hosted LLM then writes the answer, all locally. The same pattern works with cloud data through n8n. My [AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/) workflow processes Google Drive documents for a RAG chatbot. - The assistant speaks replies with local [Kokoro TTS](https://github.com/hexgrad/kokoro), and an Ollama model often produces the text. The full chain runs on local hardware: voice input, [OpenAI Whisper](https://github.com/openai/whisper), Ollama for text or vision processing, Kokoro TTS and voice output. The GPU and Ollama make this chain possible. Here one AI (Gemini) builds software that calls other AI models (Ollama) on local hardware. That is the core of my AI-first, local-first approach. ## Recent Ollama features and the GPUs that run them Ollama keeps adding features. Two recent ones matter most for my work, and both benefit from a capable GPU. ## 1. Native thinking output Models that support it can return their "thinking" process separately from their final content. Matt Williams covers this in his video [Ollama now supports Thinking Natively](https://youtu.be/yBD598s5g8c?feature=shared). Set think: true in an API call, or run /set think in the CLI, and the response includes a separate thinking field. - Parsing reasoning out of mixed output used to be complex. With a separate field, the code is cleaner. When I ask Gemini for an app that shows a model's thought process, the generated code is simpler and more reliable. - Agents can use the reasoning to make decisions and handle errors. Larger GPUs run models that produce more detailed thinking without a big performance cost. ## 2. Structured outputs for reliable data flow Ollama supports structured outputs with format: , not only format: json. The output is checked against the schema, which helps with constrained values such as enums. The goal is more consistent and reliable AI-generated data. - My [Desktop AI Assistant](/blog/power-stack-desktop-ai-assistant) uses [Pydantic](https://docs.pydantic.dev/latest/) to validate data from many sources, including AI models. Structured output from Ollama helps that data arrive correct from the source. - When the output is consistently structured, Gemini writes less parsing and error-handling code. - Larger models on capable GPUs can generate more complex structured data. Schema checks at the output stage help when building data pipelines. These features need GPU power. Larger models on NVIDIA RTX GPUs can produce detailed reasoning or complex structured data in reasonable time. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Using OpenRouter to switch between many LLMs Source: https://workflows.diy/blog/openrouter-ai-polyamory-mastering-your-llm-harem - Why: To show how OpenRouter.ai makes it easy to try many LLMs, from creative writing to coding, and to track usage and costs across them. - Challenge: Using several models usually means several API keys and integrations. OpenRouter.ai puts many models behind one API, so switching a model is a small change. - Outcome: A practical case for OpenRouter.ai when you use several models. It covers choosing a model for each task, comparing responses and tracking cost. - Learnings: OpenRouter.ai gives access to models from many providers through one API. Switching models means changing the model identifier. The model details show capabilities, context window sizes and pricing, and comparing models on the same prompt shows which fits each task. - AI approach: The post treats model choice as a decision for each task. A workflow can select a model for each sub-task, or compare two models on the same prompt. - Models used: OpenRouter.ai gives one API for many LLMs. The post covers how to compare models through it and how to change models without rewriting integration code. [ All writing ](/blog) May 23, 2025 # Using OpenRouter to switch between many LLMs OpenRouter.ai gives you one API for many LLMs, so you can swap models without rewriting integration code. To compare two models, send the same prompt to both through OpenRouter and see which answer fits the task better. ## Why use more than one LLM? One model might be a strong research assistant, such as Claude-4 Opus. Another might be a fast sparring partner for brainstorming, such as a fine-tuned Llama 3 variant. A third might describe images, such as LLaVA or GPT-4 Vision through OpenRouter. [OpenRouter.ai](https://openrouter.ai/) lets you switch between these models in one place. For a hard coding problem, pick a model known for logic. For a romantic sonnet, pick one with a more flowery style. OpenRouter also tracks usage and potential costs, which helps when you compare what different models charge to summarize a long document. ## What OpenRouter.ai provides - Access to a large range of models from providers such as OpenAI, Anthropic, Google, Cohere and Mistral, plus many open-source options, through one API. You do not need a separate API key for each. - A consistent API format. You write the integration once and change the model identifier to use another model. - Clear information about model capabilities, context window sizes and pricing before you make a call. - Switching takes one edit. If a model does not suit a task, or a newer one appears, change the model identifier. Switching models lets you send each sub-task to the model that suits it. You can also send the same prompt to two models and compare the answers for quality and tone. ## Choosing a model for each task Favorites form quickly for specific tasks. One model may feel more empathetic for creative writing. Another may be more accurate for factual questions or code. Gemini Pro through OpenRouter is my choice for summarizing reports. For an unusual creative story, I switch to MythoMax. OpenRouter is the gateway. The models you access may have their own memory features. To compare two models, send the same prompt to both through OpenRouter and see which answer fits the task better. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # How n8n ties together workflows, agents and MCP Source: https://workflows.diy/blog/orchestrating-intelligence-workflows-agents-mcp-n8n - Why: To explain the architecture of AI applications that go beyond single LLM calls. It covers orchestration with workflows, dynamic decisions with agents, and standard connections with MCP, with n8n as the tool that ties them together. - Challenge: Building AI systems that run multi-step tasks, use external tools and adapt to conditions. That means moving from simple prompts to agentic designs and standard protocols. - Outcome: A clearer picture of when to use AI workflows (predictable tasks) and AI agents (dynamic tasks), how MCP connects them to tools and data, and how n8n builds, manages and exposes these systems. - Learnings: AI systems are becoming interconnected. Workflows give reliability for defined processes, and agents give flexibility for open-ended problems. MCP standardizes tool access. n8n can both use and provide MCP capabilities. - AI approach: The post analyzes concepts and tools, such as n8n's MCP nodes, that matter for building AI solutions. Developers orchestrate multiple components and models to reach complex goals. - Models used: This post explains AI workflows and agents, the role of the Model Context Protocol (MCP) in connecting AI to data and tools, and how n8n builds these systems. [ All writing ](/blog) May 24, 2025 # How n8n ties together workflows, agents and MCP AI workflows follow fixed steps, while agents decide their own next step. Use a workflow when the steps are known and an agent when the number of steps is hard to predict. MCP connects either one to tools and data. ## From prompts to processes Tasks with several steps, decisions and calls to outside systems need more than a single LLM prompt. They need an orchestrated system: a workflow for predictable tasks, or an agent for dynamic ones. Both need a standard way to connect to the data and tools they use. The Model Context Protocol (MCP) is emerging for that job. Platforms such as [n8n.io](https://n8n.io/) are central to orchestrating these systems. This post explains how workflows, agents and MCP fit together, and what role n8n plays. ## Workflows vs. agents Concepts from AI research labs like Anthropic help here. A workflow is like a skilled specialist following a fixed checklist or recipe. An agent is like a project manager who plans, delegates and adapts to reach a larger goal. For more on agent design, read Anthropic's post on [building effective agents](https://www.anthropic.com/engineering/building-effective-agents). ### 1. Workflows follow predefined paths An AI workflow is an agentic system where a developer maps out the steps and tool use. It is smart automation, with an LLM guiding specific parts of a preset process. Workflows are predictable and consistent because their path is coded explicitly. They often build on an augmented LLM with retrieval, tools and memory. Use a workflow when a task is well defined and splits into fixed subtasks or distinct categories. Workflows offer reliability and consistency. They can cost more time or money than a single LLM call, in exchange for better task performance. Two common patterns are Prompt Chaining and Routing. Prompt Chaining runs sequential steps, where one LLM's output feeds the next. Routing sends inputs to specialized tasks based on an initial classification. For example, an LLM classifies an incoming email (Routing), then a second LLM, trained or prompted for that type of reply, drafts the answer (Prompt Chaining). ### 2. Agents direct their own steps An AI agent is a system where the LLM directs its own processes and tool use, and controls how it reaches a task. It starts from a command or conversation, then plans and works more independently. It can ask for more input or judgment along the way. At each step, it checks progress against "ground truth" from the environment, such as tool results or code execution feedback. Agents are dynamic, model-driven and adaptive, and they learn from environmental feedback. Their toolsets need clear, thorough documentation to succeed. Use agents for open-ended problems where the number of steps is hard to predict, so a fixed path would not work. They suit flexible, model-driven decisions, especially in trusted environments, because costs and errors can compound. They add value for tasks that mix conversation and action, such as customer support or coding. Effective agents keep the design simple and show their planning steps. Their agent-computer interface (ACI) needs careful tool documentation and testing. ## Bridging the gap with the Model Context Protocol (MCP) Workflows and agents need access to data and tools that are often siloed. Connecting each new source used to require custom and often brittle solutions, which slowed development. The Model Context Protocol (MCP) is an open standard, conceptualized by teams like those at Anthropic. It connects AI assistants, including LLMs, workflows and agents, to the systems where data lives and tools run. It works like a USB-C port for AI applications, standardizing how models connect to data sources and tools in place of custom integrations. Read Anthropic's announcement for the vision: [Model Context Protocol](https://www.anthropic.com/news/model-context-protocol). MCP uses a client-server architecture. MCP servers are lightweight programs that expose tools, resources or prompts through the protocol, and they can reach local data or remote services. MCP clients, also called hosts, are apps such as Claude Desktop, IDEs, AI tools or agent frameworks that connect to servers to use what the servers expose. Why MCP matters: - It simplifies giving AI systems access to the data and tools they need. - It makes agents and complex workflows easier to build, with pre-built integrations available. - It lets tools be reused across applications and agent frameworks. - It lets you switch LLM providers without rebuilding tool integrations. - It can improve data security through standard interaction points. Examples include pre-built MCP servers for Google Drive, Slack, GitHub, Git and Postgres. You can also build custom servers for an internal database, a RAG knowledge base or a web search tool such as the Brave MCP server. ## How n8n orchestrates and integrates AI [n8n](https://n8n.io/) is a flexible AI workflow automation tool for technical teams. You can build workflows and AI agents with a visual drag-and-drop interface or with code. It is strong at connecting LLMs to workflows and building multi-step agents. n8n can act as both an MCP client and an MCP server. That sets it apart. - As an MCP client, n8n includes an "MCP Client Tool node". It lets workflows and AI agents built in n8n use tools exposed by external MCP servers. The node lets the LLMs behind n8n agents call those external tools for web search, database work or knowledge base retrieval. - As an MCP server, n8n has an "MCP Server Trigger node". It lets n8n expose its own tools, or entire workflows, to external AI agents that act as MCP clients. n8n already has over 500 integration nodes. MCP adds a standard layer for more tool access, especially for AI-specific capabilities. You can self-host n8n for full data control or use it in the cloud. ## Putting the pieces together in one scenario Here is a scenario that shows how these parts work together, with n8n at the center. - A company wants an AI-powered customer support agent that answers product questions and checks order statuses. - They decide the task needs dynamic decisions and adaptability, so an agent fits better than a fixed workflow. - They build the agent in n8n, using its LLM nodes for natural language understanding and generation, and its logic nodes for structuring the agent's behavior and decision trees. - The agent needs to look up order history in their Shopify store and search their private knowledge base, perhaps a RAG system, for troubleshooting guides. - Rather than building custom API integrations for Shopify and the knowledge base into the agent's logic, they use MCP. They might find or build MCP servers that expose "lookupOrder" for Shopify and "searchDocs" for the knowledge base. - Inside the n8n agent workflow, they use the "MCP Client Tool" node. When a customer asks about an order, the LLM calls the lookupOrder tool on the Shopify MCP server. For product questions, it calls searchDocs on the knowledge base MCP server, all through the same protocol. - The n8n agent resolves customer queries by using external tools through MCP, all orchestrated within n8n. Developers focus on the agent's conversation logic and decisions, and rely on MCP for standard external connections. ## Challenges in distributed AI Distributed AI systems add challenges. Testing gets harder, and issues are harder to reproduce and debug because many components interact. Security concerns also rise. These problems are being actively solved, drawing on lessons from managing complex distributed systems like microservices. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Building PlantDex with Vue 3, Supabase, and Pinia Source: https://workflows.diy/blog/plantdex-mvp-journey-vue3-supabase-pinia-ai - Why: To build a feature-rich minimum viable product (MVP) for PlantDex, a plant identification and cataloging app, with modern web technologies, Supabase as the backend and an AI-first process. - Challenge: Integrating Supabase for every backend service (Auth, DB, Storage, Edge Functions), managing client state with Pinia, structuring a modular Vue 3 frontend, and keeping the AI within best practices and project requirements. - Outcome: A cloud-native web app where users sign in, manage a plant catalog with photos, identify plants and get information with Google Gemini, and import and export their data. The AI wrote the code under human direction. - Learnings: A detailed System Instruction is essential for AI code generation. Supabase offers a comprehensive, developer-friendly BaaS. Pinia gives type-safe state management for Vue 3. Modular components and composables keep complexity manageable, even in an AI-driven project. Iterative prompting and validation matter when working with an AI coding partner. - AI approach: The LLM (Gemini) was the main software developer. It implemented nearly all of the Vue 3 frontend, Pinia stores, Supabase interactions (client-side and Edge Functions) and utility functions. I acted as architect, prompter and validator, guiding the AI through a phased development plan based on our System Instruction. - Models used: Google Gemini 2.5 Pro, set up as a Vue 3, Pinia and Supabase web application development assistant with our System Instruction, was the primary code generator for nearly every line of PlantDex. [ All writing ](/blog) May 22, 2025 # Building PlantDex with Vue 3, Supabase, and Pinia PlantDex is a plant cataloging app where Google Gemini generated nearly every line of code, built with Vue 3, Pinia, and Supabase. Gemini built it in four phases, starting with user accounts and plant data storage. I built PlantDex, a plant identification and cataloging app, with Google Gemini as the main code generator. Gemini worked from a detailed System Instruction. Nearly every line of code came from the AI, and my role was architect, prompter and validator. PlantDex lets plant enthusiasts catalog their collections, identify new plants with AI and manage their data in the cloud. The stack had to support quick iteration. The My Plants page of the MVP. ## The tech stack The AI implemented the whole stack: - Vue 3 with the Composition API and TypeScript gives a reactive, type-safe frontend. The Composition API, especially with script setup, keeps component logic clean and modular. - Pinia is Vue's official state management library. It manages global state for user authentication (authStore) and the plant collection (plantStore). - Supabase is the backend. It provides four services: Authentication for sign-up, login, password recovery and session management. - A PostgreSQL database for user and plant data, protected by Row Level Security (RLS). - Storage for user-uploaded plant photos, also protected by RLS policies. - Edge Functions (Deno) for server-side work such as data import. - Vite runs the development server and builds the app. - Tailwind CSS handles the styling, including the recent light-theme overhaul. - The Google Gemini API powers plant identification, information retrieval and tag suggestions. ## Phase 1 covers Supabase and auth The first step was user accounts and data storage. It involved three parts. - The plants table defines a column for each plant attribute (name, notes, photos JSONB, tags array and so on). RLS policies make sure users can only access their own data. - The AI generated a Pinia store (authStore) for registration, login, logout and password reset. It listens to Supabase's onAuthStateChange events, which centralizes all auth logic. - The AI created Vue components for Login, Signup, Forgot Password and Update Password. Vue Router guards protect the authenticated routes. ## Phase 2 adds plant data and CRUD With sign-in working, the next step was managing plant data. - The AI created a modular set of composables under src/composables/supabase/plant-data/ for Create, Read, Update and Delete operations on the Supabase plants table. This layer also converts between frontend camelCase and database snake_case. - The plantStore Pinia store holds the plant catalog. It manages the user's plants, loading states, error handling and search. Its actions call the Supabase data access layer. - The AI built PlantListPage and AddPlantPage. They list plants from plantStore, add new ones and save them to Supabase. ## Phase 3 adds photos, AI and details This phase added the core features. - Supabase Storage holds plant photos. The app uploads photos, attaches them to plant records and displays them. RLS policies matter here too. The useSupabaseStorage.ts composable handles storage calls. - The AI split PlantDetailPage.vue into a main orchestrator (usePlantDetail.ts). It delegates to sub-composables for loading data (usePlantLoader.ts), saving updates (usePlantSaver.ts), managing photos (usePlantPhotoManagement.ts) and AI features (usePlantAIFeatures.ts). Page-specific composables, such as usePlantDetailForms.ts, manage UI interactions. - Composables such as usePlantIdentification.ts, usePlantInformation.ts and usePlantTagging.ts call the Gemini API. They fetch image data from Supabase Storage when needed. - The app bulk uploads plants with auto-identification and exports and imports user data. A Supabase Edge Function handles the import, for security and server-side validation. ## Phase 4 moves the app to a light theme The most recent phase changed PlantDex from a dark theme to the current light, plant-inspired look. The work updated global styles, the Tailwind configuration and nearly every component. The AI generated the class and style changes. ## Key learnings - The System Instruction matters most. The detailed System Instruction defined the AI's role, constraints and coding standards. It kept the output consistent. - Supabase is a strong BaaS. Its services and JavaScript client library made it a good fit for a full-stack app built quickly. RLS is a critical security feature. - Pinia made global and domain-specific state easy to manage, with type safety. - Modularity matters, even with AI. Small, focused components and composables help with maintenance and with reasoning about the system. The AI often produced modular structures when the prompts were good. - I am the orchestrator. My work moved from line-by-line coding to defining requirements, designing flows, prompting precisely and validating output. - Iterative refinement is still needed. The AI often got things right on the first try. Feedback and revision requests were still needed for complex features and for outputs that needed adjustment. ## The PlantDex MVP today The header image shows the PlantDex MVP as it stands. The app came together quickly, with modern tools and a well-guided AI collaborator. More features are possible, such as better import strategies and advanced filtering. The app is functional and ready for users and further growth. I now think much software development will involve a partnership between human architects and capable AI implementers. The skill that matters is prompting and guiding the AI well. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # My desktop AI stack with Electron and Ollama Source: https://workflows.diy/blog/power-stack-desktop-ai-assistant - Why: To explain how Electron, Vue 3, local Ollama, a FastAPI backend and Docker fit together in a desktop AI assistant when an AI writes all the code. - Challenge: Integrating several technologies while an AI wrote all of the code. It took precise, iterative prompting and validation. The main human work moved from coding to architecture, task definition and testing the AI's output. - Outcome: A working application with local RAG, vision processing, and live transcription and summarization on the desktop, all built by an AI. The build shows humans directing the work while AI executes it. - Learnings: Each technology is strongest in combination, especially when an AI builds it. Electron handles the cross-platform UI, Vue 3 handles reactivity, Ollama runs local AI, FastAPI serves Python backend services and Docker manages dependencies. Human expertise in defining what and why matters most when the AI handles how. - AI approach: Google Gemini 2.5 Pro Preview wrote 100% of the application code, from the Vue components to the FastAPI services and the Electron main process logic. It followed detailed system instructions and task prompts I wrote. My role was architect, prompter and validator. - Models used: This post covers the architecture of my Desktop AI Assistant. Google Gemini 2.5 Pro Preview wrote 100% of the application's code, following my specifications and system instructions. [ All writing ](/blog) May 13, 2025 # My desktop AI stack with Electron and Ollama We built a desktop AI assistant with Electron, Vue 3, local Ollama models, a FastAPI backend and Docker, and an AI coding assistant wrote all of the code. Our job was to define the what and the why, and the generated code still needed thorough testing. Electron, Vue 3, Ollama, FastAPI and Docker make up the stack behind my Desktop AI Assistant. Google Gemini 2.5 Pro Preview wrote 100% of the code, from the Vue 3 frontend to the FastAPI backend and the Electron shell. I wrote the specifications, the system instructions and the prompts. I gave Gemini a system instruction that defined its role as an expert full-stack developer. I specified what to build, and the AI worked out how to build it and wrote the code. ## The technologies and their roles - Electron is the cross-platform desktop shell. It lets web technologies build a native desktop experience. Gemini generated the main process logic, the window management and the IPC (inter-process communication) bridge to the renderer, following the security practices I outlined. - Vue 3, with Vite and Tailwind CSS, builds the user experience. Gemini wrote clean, component-based Vue code with the Composition API. It split the RAG interface into components such as CrawlInputForm.vue and RagQueryInput.vue, and into the useCrawlAndRag.ts composable. The AI-generated codebase was surprisingly readable and maintainable. - Local LLM interaction was a core requirement, and Ollama handles it. The app uses models such as Llama 3.x and LLaVA on the user's machine for chat, vision analysis and summarization. Gemini wrote all of the ollamaService.ts code, including model listing, streaming chat and vision processing. - To use Python's AI and ML libraries, such as Kokoro TTS and Sentence Transformers for RAG, I needed a FastAPI backend. Gemini designed and coded it, including: Modular APIRouters for each function, such as tts_router.py and rag_router.py. - The rag_core module, which turns my RAG requirements into Python services for chunking, embedding, ChromaDB interaction and answer generation. - Pydantic models that validate data across the API endpoints. - Docker manages dependencies and isolates the crawler. The crawl4ai library, which uses Playwright, posed a common cross-platform problem, especially with asyncio on Windows. After several iterations with Gemini, the fix was to Dockerize the crawler. Gemini generated the Dockerfile and the minimal FastAPI app, crawler_api.py, for this worker service. ## How the components work together Here is the RAG workflow, step by step: - The user interacts with the Vue UI, such as CrawlRagView.vue. - An IPC call, defined in AI-generated preload scripts, travels to the Electron main process. - Electron's crawlRagService.ts, which is AI-generated, makes an HTTP request to the FastAPI backend. - FastAPI's rag_router.py routes the request to ingestion_orchestrator.py, which is also AI-generated. - This orchestrator calls the Dockerized crawl_service_docker over HTTP. - The Docker service, crawler_api.py using crawl4ai, fetches the web content. - The content returns to FastAPI, which handles chunking, embedding into ChromaDB and storage. Gemini implemented all of this logic. - RAG queries follow a similar flow, with FastAPI using Ollama to synthesize the final answer. I directed this workflow with prompts, and Gemini wrote all of the code. My role was to define the what and the why. The AI handled the how. ## Advantages of the AI-built stack - Development was fast. With the AI writing all of the code, I built features faster, and my time went to architecture, prompt precision and validation. - The app is local first. Ollama, the local ChromaDB vector store and local TTS keep user data private, and the operations can run offline. - The UI is rich and fast. Electron, Vue 3 reactivity and Tailwind styling produced a polished interface, all generated by AI. - FastAPI connects the app to Python. It gives access to Python libraries for specialized AI tasks. Gemini wrote both the Python backend and the Electron-to-Python communication layer. - Docker keeps the crawler stable. It manages the complex dependencies, so the crawler worked across different (conceptual) environments. - I could focus on design. Without line-by-line coding, I could focus on system architecture, the user experience flow and defining the AI's capabilities. ## Challenges of an AI-coded project - Prompt engineering is the new coding. The precision of system instructions and task prompts matters most. Ambiguity leads to AI 'bugs'. - Validation is still required. Gemini's accuracy was very high, but thorough testing of AI-generated code remains necessary. - The AI's reasoning can differ from a human's. Its logic often shows in its well-commented code, which I asked for, and that helps with debugging and extension. - Packaging for end users is a separate problem. An Electron app with a Python backend and Docker dependencies presents unique deployment challenges. That is a topic for a future post. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # My first Quasar app was a "Hello World" adventure Source: https://workflows.diy/blog/quasar-hello-world-adventure - Why: To learn the Quasar Framework by building a simple "Hello World" app. - Challenge: Setup, TypeScript's strict typing of plugin handlers, and understanding Quasar's plugin system within Vue 3's Composition API. - Outcome: A single-page app with routing, navigation, reactive inputs, cards, a select dropdown, a data table and fullscreen toggling. - Learnings: The Quasar CLI is useful, components integrate well, and quasar.config.ts controls which default plugins load. - AI approach: My LLM assistant acted as a pair programmer, guiding setup, code generation and debugging of Quasar-specific issues. It was sometimes confused. - Models used: My LLM assistant (Google Gemini 2.5 Pro Preview 05-06) helped with every part of the project, and all of the code was written with its help. [ All writing ](/blog) May 16, 2025 # My first Quasar app was a "Hello World" adventure A first Quasar Framework project built with Vite and TypeScript, starting from a Hello World single-page app. I built a simple single-page app to learn the Quasar Framework: its CLI, its component system and its developer experience. ## The challenges Project setup with Vite and TypeScript was smooth with the Quasar CLI. The hard part was TypeScript's strictness around plugin and directive handler typings. The LLM and I went through several rounds to get $q.notify and touch directive event payloads typed and working. A key lesson: the framework.plugins array in quasar.config.ts decides which default plugins load. Leave it empty and no default plugins show up. ## The outcome By the end of the session, the app, named quasar-step1, had: - A main page displaying the classic greeting. - Reactive user input with QInput that updated other parts of the UI. - A QCard that shows information, including a live-updating clock using Quasar's date utils. - A QSelect component for dropdown selections. - A basic QTable rendering static data, with sortable columns. - Multi-page navigation (/, /home, /about) handled by Vue Router, with links in a QDrawer built from a reusable EssentialLink component. - Quasar plugins such as AppFullscreen and Notify. ## Key learnings - The Quasar CLI (@quasar/app-vite) scaffolds and runs the project. quasar new page is a shortcut for adding a page. - Quasar's components share props such as color, icon, label and the filled, flat and bordered variants. - The framework section and build.vueRouterMode in quasar.config.ts matter. An empty framework.plugins array loads no default plugins, which was a lesson I learned. - Vue Router works well once links use the :to prop on QItem or EssentialLink. My first internal links used href, a common SPA mistake. - TypeScript needs precise types for event and directive handlers. The vue-tsc errors were frustrating at first, but they pointed to the correct typings, and that made the code more reliable. - In script setup, use $q.pluginName for Quasar plugins. In directive handlers or other tricky contexts, call the plugin's static methods, such as Notify.create(), if $q.pluginName misbehaves. ## The AI approach My LLM assistant wrote code snippets, explained concepts and helped debug the type errors. It sometimes put JavaScript comments into HTML templates, which Vue does not accept. Even AI-written code needs a review. Next, I may try Pinia for state management or another build mode. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Google Drive RAG chatbot workflow in n8n Source: https://workflows.diy/blog/spotlight-rag-chatbot-google-drive-gemini-qdrant - Why: To highlight a popular n8n community workflow that turns Google Drive documents into an AI-powered knowledge base using RAG, Gemini and Qdrant. It makes document silos searchable and conversational. - Challenge: Making large document collections in Google Drive searchable in natural language. This involves retrieving documents, chunking, embedding, vector storage in Qdrant, and a Gemini LLM for contextual answers and chat history. - Outcome: A widely adopted n8n template for an AI-powered RAG chatbot. It connects Google Drive, Gemini, Qdrant and Telegram for notifications, so users can chat with their documents. - Learnings: High community interest shows real demand for accessible RAG solutions. Combining n8n with Google Drive, Gemini and Qdrant makes a practical tool. Secure management of vector stores, including verified deletions, matters too. - AI approach: The workflow uses Google Gemini as its core model for understanding queries, generating context-aware answers from RAG and extracting metadata from documents. n8n orchestrates the system and turns static documents into conversational assets. - Models used: This workflow prominently features Google Gemini for its conversational AI capabilities and metadata extraction. It also implicitly uses embedding models for vectorization in Qdrant. [ All writing ](/blog) June 2, 2025 # Google Drive RAG chatbot workflow in n8n An n8n community template indexes Google Drive documents in Qdrant and answers questions with Gemini. You have to set the Drive folder and the connections yourself. The n8n template [AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/) turns a static document repository into a searchable, conversational knowledge base. It is one of the most visited templates in my [roundup of popular n8n workflows](/blog/top-n8n-ai-automation-workflows-by-popularity). The template's two stages: indexing the documents, then chatting with them. ## Document silos in Google Drive Google Drive and other storage hold folders of PDFs, Word documents, text files and spreadsheets. The information is valuable, but finding answers across hundreds of files is slow and frustrating. How do you make that knowledge queryable and conversational? Retrieval Augmented Generation (RAG) makes that possible, and I covered the topic in ["Do million-token context windows replace RAG?"](/blog/to-rag-or-not-to-rag-navigating-large-context-windows). ## How it works The workflow runs a RAG pipeline in three stages. - Document processing and storage The workflow retrieves documents from a Google Drive folder you specify. - It then splits these documents into chunks optimized for AI understanding. - AI extracts key metadata from your documents. That goes beyond file names and captures what the content says, which enables context-aware search. - The chunks and their metadata become vectors, stored in a Qdrant vector database. Qdrant suits this well, because it offers efficient similarity search, which is the heart of RAG. - Intelligent chat interface Once the knowledge base is built, the workflow provides a conversational interface powered by Google's Gemini AI. Users ask questions in natural language. - For each query, the RAG step retrieves the most relevant document chunks from Qdrant. - Gemini receives those chunks with the original question and generates accurate, context-aware responses grounded in your documents. - The workflow also keeps a chat history in Google Docs for easy reference. - Vector store management The workflow deletes documents from the Qdrant vector store, and it asks for human verification through Telegram notifications first. That prevents accidental data loss. - It supports batch processing, which makes it easier to onboard large volumes of documents. ## The tools and their roles The workflow combines four tools that fit into any [AI development power stack](/blog/my-ai-development-power-stack). - n8n orchestrates the workflow, connects the services and manages the logic flow. It is an example of [orchestrating complex AI systems](/blog/orchestrating-intelligence-workflows-agents-mcp-n8n) with n8n. - Google Drive is a familiar place to store source documents. - Google Gemini provides natural language understanding and generation for the chatbot and for metadata extraction. - Qdrant is a high-performance, open-source vector database for storing and searching the embeddings from your documents. ## Setting up the template The template makes setup manageable. The key steps are: - Set up credentials for Google Drive and Docs, the Gemini AI API, your Qdrant vector store and a Telegram bot for notifications. The template also includes a node for deleting Qdrant points, which requires an OpenAI API key for its embedding model used in the LangChainJS-based deletion logic. - Specify your Google Drive folder ID and the Qdrant collection name. - The workflow guides you through verifying each part of the process. ## Why the template is popular The popularity of this template likely comes from a few factors: - It solves a high-value problem. Making internal documentation easy to query helps productivity and decision-making. - It integrates models like Gemini, which power the chatbot's answers. - It is a clear, working example of a RAG pipeline, a topic that gets plenty of attention in AI. - It shows what n8n can do. The workflow builds a multi-step AI application, in line with an [AI-first approach](/blog/ai-first-vue3-site-migration-flawless-execution) to building solutions. The template is on [n8n.io](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/). If you want help building one like it for your team, [get in touch](/#contact). [ All writing ](/blog) --- # Do million-token context windows replace RAG? Source: https://workflows.diy/blog/to-rag-or-not-to-rag-navigating-large-context-windows - Why: To help developers and AI strategists choose between RAG and a large context window for a knowledge base, based on data size, complexity and accuracy needs. - Challenge: Large context windows challenge the assumption that every knowledge-intensive task needs RAG. Naive RAG still has limits with very large or complex datasets. - Outcome: Large context windows suit smaller knowledge bases. Advanced methods such as contextual retrieval, agentic RAG and knowledge graphs help with large data or high accuracy needs. - Learnings: For knowledge bases under about 200k tokens, a large-context model can work well with the data in the prompt. Beyond that, or when accuracy matters more, use enhanced RAG strategies that fix the shortcomings of basic retrieval. - AI approach: The post draws on AI research papers and implementation guides to compare ways of providing context to AI systems. - Models used: Explores whether RAG still matters now that some models have million-token context windows, such as Google's Gemini. The post covers when direct prompting works and when advanced RAG is still needed. [ All writing ](/blog) May 24, 2025 # Do million-token context windows replace RAG? Models with million-token context windows can hold a small knowledge base in one prompt, but RAG still matters once the knowledge base outgrows the window. Skip RAG for a few hundred pages, and use more advanced retrieval once the data is fragmented, tabular or spread across documents. ## Why RAG became the default Context windows used to be small. Feeding a model a paragraph or two of company documents often hit the limit. For a knowledge base too large for those windows, RAG was a necessity. RAG (retrieval augmented generation) became the standard way to give AI systems access to proprietary knowledge. You split the knowledge base into chunks, turn each chunk into a numerical embedding and store it in a vector database such as Qdrant, Pinecone or ChromaDB. At query time, you retrieve the most relevant chunks and add them to the prompt. Tools like [n8n.io](https://n8n.io/) simplify this. For example, the [n8n workflow](https://n8n.io/workflows/2982-ai-powered-rag-chatbot-for-your-docs-google-drive-gemini-qdrant/) integrates Google Drive, Gemini and a Qdrant vector store to build a RAG chatbot for your documents. Earlier models had context limits of 8k, 32k or 128k tokens. Those limits forced workarounds such as dropping messages, summarizing, or retrieving from a vector database. Google's Gemini series now offers context windows of one million tokens or more. A million tokens can hold several novels or hundreds of podcast transcripts. That raises a question for anyone building AI solutions. With so much room in the prompt, do we still need RAG? ## The answer depends on size and complexity The answer is not a simple yes or no. It depends on the size, nature and complexity of your knowledge base, and on the accuracy your application needs. ### When putting everything in the prompt works For a knowledge base of a few hundred pages, or roughly 200,000 tokens, a long-context model can take the whole thing in the prompt. Google's documentation for [Gemini's long context capabilities](https://ai.google.dev/gemini-api/docs/long-context) says Gemini 1.5 Pro can process up to 1 million tokens, and up to 10 million in private preview. That is about 700,000 words, or many hours of video or audio. Google calls this a "more direct approach: providing all relevant information upfront." This direct method lets the model use its in-context learning across the whole dataset at once. If the dataset fits and the queries are simple, such as finding facts or summarizing, you can skip a separate RAG pipeline and simplify the architecture. [Prompt caching](https://ai.google.dev/gemini-api/docs/caching) makes repeated queries over the same context faster and cheaper when you use the API. ### When RAG and its more advanced forms still matter RAG remains necessary when your knowledge base grows beyond what even a million-token window can hold. It is also needed when retrieval and synthesis get more complex. A large window is not always the most effective or efficient option, even when it could hold all your data. Naive RAG has known shortcomings with complex, interconnected information: - Fragmented context. RAG splits documents into chunks, and a chunk retrieved alone may lack the surrounding context. A sentence about revenue growth means nothing without the company and time period, which may sit in a chunk that was not retrieved. - Structured and tabular data. Basic RAG often struggles with trends in spreadsheets, or with questions that need aggregation across rows or tables. It may retrieve only a small, unrepresentative slice of the data. - Cross-document blindness. Connecting facts spread across several documents is a hard problem for simple RAG. - Retrieval accuracy. Even getting the right chunks can fail. Benchmarks show non-trivial failure rates for basic RAG, which is often unacceptable in production. A large context window does not fix a flawed retrieval. If RAG missed key information or pulled irrelevant snippets, the model still gets the wrong input. LLMs handle needle-in-a-haystack tasks, which find one fact in a long text, but their performance can drop when they search for several needles. ## Beyond basic RAG Building agents that use large, complex knowledge bases usually means moving past naive RAG. Several techniques go further: - Contextual retrieval. Teams such as [Anthropic](https://www.anthropic.com/news/contextual-retrieval) have benchmarked this approach, and it improves retrieval accuracy. The core idea is to enrich chunks before they are embedded and indexed. An LLM writes a short context for each chunk, based on the surrounding document or related documents. That context is added to the chunk, and queries search the enriched chunks. Anthropic's research shows that this technique alone reduces retrieval failures. Combined with lexical search (BM25) and reranking, the gains are larger. Prompt caching makes the upfront context generation cheaper. - Agentic RAG. In a standard setup, RAG is a passive tool that the LLM calls. In agentic RAG, the LLM reasons about the retrieval process itself. The agent can check the results of an initial lookup. If they are not enough, for example when it needs a whole spreadsheet rather than a few rows, it can use other tools. It can list documents by title, retrieve a full document, or query tabular data with SQL-like commands. That flexibility gets past many limits of fixed RAG pipelines. - Hybrid search. This combines semantic search, which matches meaning through embeddings, with lexical search such as BM25, which finds exact keywords. Specific technical terms, error codes and unique identifiers are then not missed by embedding models alone. - Reranking. An initial retrieval can pull hundreds of potentially relevant chunks. A reranker, often a smaller specialized LLM or a cross-encoder, scores them by relevance to the query. Only the top K chunks, such as the best 20, go to the main LLM. This filters noise, improves answers, and cuts the cost and latency of the final LLM call. - Knowledge graphs. For very large, interconnected knowledge bases, knowledge graphs can complement or replace pure vector search. Frameworks such as LightRAG build a graph of the relationships between topics, ideas and concepts in your documents, next to the vector store. A query can use vector retrieval and graph traversal together, which gives deeper context. This matters as knowledge bases grow into thousands or hundreds of thousands of documents, where naive RAG can start to degrade. Your database and file processing matter too. Vector databases such as Qdrant or Chroma, or hybrid setups with Postgres, affect RAG quality, as do tools like Unstructured.io for complex file types. For real-time, constantly changing data, dynamic knowledge graph solutions are still being developed. ## To RAG, evolve RAG, or go direct? Million-token windows in models like Gemini change the picture. For smaller, self-contained knowledge bases, putting all the relevant information in the prompt is simpler. It may remove the need for a separate RAG pipeline. For large, complex, growing datasets, some form of RAG is still needed for scalable access to external knowledge. Basic RAG is often just the starting point. Contextual retrieval, agentic RAG, hybrid search, reranking and knowledge graphs are becoming necessary parts of accurate agents that use vast knowledge stores. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Ten Ollama tips for running local AI Source: https://workflows.diy/blog/top-10-ollama-tips-local-ai-power-user - Why: To give developers and AI enthusiasts a practical guide to Ollama, from installation through the API, so they can run models locally. - Challenge: Many people do not know how to start with local LLMs, or assume the setup is hard. Ollama makes setup simpler, and capable hardware such as NVIDIA GPUs makes the advanced features practical. - Outcome: A list of ten essentials that encourages readers to run models locally. It covers privacy, cost and offline use, and links to posts on my AI stack and hardware setup. - Learnings: Ollama makes local LLM deployment simple. The key parts are installation, the CLI for managing models, Modelfiles, the local API with Python and JavaScript libraries, GUI options and local RAG. A capable NVIDIA GPU improves speed and supports thinking output and structured outputs. - AI approach: The post treats Ollama as a base for AI-first work. A model such as Google Gemini can build applications that call local models, as in my Desktop AI Assistant. - Models used: Ten practical tips for Ollama, a tool that runs open-source LLMs on your own hardware. The tips cover installation, model management, Modelfiles, the local API, RAG and advanced output features. [ All writing ](/blog) June 2, 2025 # Ten Ollama tips for running local AI After a model downloads, Ollama runs it on your own machine with no per-call cost and no internet connection. ## Why run models locally Cloud AI services raise three concerns: data privacy, recurring costs and the need for a constant internet connection. **[Ollama](https://ollama.com/)** runs open-source large language models (LLMs) on your own computer, which avoids all three. For developers working in an [AI-first way](https://www.workflows.diy/ai-first-philosophy), that makes it practical to build AI applications privately and cheaply. Running models locally with Ollama has these advantages: - Your data stays on your machine. That matters for sensitive or proprietary information. - Models cost almost nothing to run once they are downloaded, so experiments are cheap. - After download, models work without an internet connection. That suits development on the go or in restricted environments. - Local execution removes the network delay of remote servers, so responses come back faster. - You choose the model parameters, the workflows the models connect to, and how each model behaves. Ollama handles the setup and management of these models. It supports reasoning models such as [deepseek-r1](https://ollama.com/library/deepseek-r1), text models such as [gemma3](https://ollama.com/library/gemma3) and [qwen3](https://ollama.com/library/qwen3), multimodal models that handle text and images, such as [llama3.2-vision](https://ollama.com/library/llama3.2-vision), and embedding models for RAG, such as [nomic-embed-text](https://ollama.com/library/nomic-embed-text). Here are ten things to know about Ollama. --- ## 1. Installation is straightforward and cross-platform Go to [ollama.com](https://ollama.com/), download the application for Windows, macOS or Linux, and run the installer. It takes a few clicks. Ollama then runs as a background service, and you use it through its command-line interface (CLI). The models need enough RAM, and larger models need GPU VRAM. ## 2. Run a model with ollama run The core command is: ollama run For example, to run the Llama 3 8B instruction-tuned model, type ollama run llama3:8b-instruct. If the model is not on your system, Ollama downloads it automatically (this is called pulling). Once the model loads, you get an interactive shell. Type /bye to exit it. ## 3. Manage models with list, pull and rm Model management uses three commands: - To see the models on your system, run ollama list. - To download a model without running it, run ollama pull . - To free disk space, remove a model with ollama rm . You can download, switch between and manage as many models as your hardware and storage allow. ## 4. Model capability depends on size and hardware The [Ollama library](https://ollama.com/library) includes general text models such as Llama 3 and Mistral, code models such as CodeLlama and DeepSeek-Coder, and multimodal models for image analysis, such as LLaVA. Model size is measured in parameters, such as 3B, 7B or 70B. More parameters usually mean more complexity and possibly more accuracy, but they need more RAM and, for speed, more GPU VRAM. My **NVIDIA RTX 4090 (desktop) and RTX 4070 (laptop) GPUs** handle larger models well. I cover the hardware in [The 30+ tools in my AI development stack](/blog/my-ai-development-power-stack), and I wrote a full post on [Running Ollama on NVIDIA GPUs for local AI](/blog/nvidia-gpu-ollama-local-ai-powerhouse). Smaller quantized models need less memory and run on weaker hardware, but they may be less capable. Learn the sizes, such as 7B, 13B and 70B, and the types, such as instruct-tuned or chat-focused, to pick the right model for your task and hardware. ## 5. Customize model behavior with Modelfiles A Modelfile is a simple text file that customizes an Ollama model. In it you can: - Start FROM an existing base model. - Set PARAMETER values such as temperature, which controls creativity versus determinism. For example: PARAMETER temperature 0.7. - Set a SYSTEM message that gives the model a persona or standing instructions. For example: SYSTEM """You are a helpful AI assistant specializing in Python code.""" The message applies to every interaction. Build your custom version with: ollama create -f /path/to/your/Modelfile You then run the custom model like any other Ollama model. ## 6. Ollama runs a local HTTP API When Ollama is active, it runs a local HTTP server, usually on port 11434. The REST API lets any application that sends HTTP requests use your local models. That includes Python scripts, JavaScript frontends, [n8n workflows](/blog/n8n-ai-revolution-tooling-codability-integrability-ai-first) and curl. My [Desktop AI Assistant](/blog/anatomy-desktop-ai-assistant-stack-features) uses this API, because its backend services talk to the local models. The main endpoints are /api/generate for single text completions and /api/chat for conversations. ## 7. Official Python and JavaScript libraries simplify API use You can call the API with raw HTTP requests. The Ollama team also publishes official Python and JavaScript libraries that hide the low-level details. For Python, install the library with pip install ollama. Common functions include: - `ollama.chat(...)` for conversations. - `ollama.generate(...)` for direct text generation. - `ollama.list()` to list your local models. - `ollama.embeddings(...)` to generate embeddings. The official libraries are the recommended way to connect Ollama to Python or JavaScript applications. They are easier to use, offer more options and are easier to maintain. ## 8. Graphical interfaces work on top of Ollama If you prefer a graphical interface, several third-party tools sit on top of Ollama. [Msty.app](https://msty.app/), [WebOllama](https://github.com/dkruyt/webollama) and [Enchanted](https://github.com/gluonfield/enchanted) give you a chat interface, manage model downloads, and can work with local documents for RAG (see point 9). They detect your local Ollama instance and its models, so the models appear in a chat interface like a cloud AI service, but run on your own machine. ## 9. Ollama works well for local RAG Retrieval augmented generation (RAG) lets an LLM answer from your private documents, not only from its training data. Ollama is a good platform for building local RAG systems. The pipeline I describe in [Do million-token context windows replace RAG?](/blog/to-rag-or-not-to-rag-navigating-large-context-windows) and build in my [n8n RAG chatbot workflow](/blog/spotlight-rag-chatbot-google-drive-gemini-qdrant) has five steps: - Load your documents, such as PDFs and text files. - Split them into chunks. - Create an embedding for each chunk with an embedding model. Ollama provides models for this, such as nomic-embed-text or mxbai-embed-large. - Store the embeddings in a local vector database, such as ChromaDB or Qdrant. - Answer questions with a local Ollama LLM, giving it the relevant chunks from the vector database as context. LangChain and LlamaIndex simplify building these pipelines with Ollama. A local pipeline keeps sensitive data on your machine, which is a core design principle of the RAG features in my [Desktop AI Assistant](/blog/anatomy-desktop-ai-assistant-stack-features). ## 10. Advanced features benefit from strong hardware Ollama keeps adding features for developers and power users. Two are worth knowing: - Native thinking support. Models that support it return their internal thinking separately from the final content. Set {"options": {"think": true}} in an API call, or use /set think in the CLI, to get a separate thinking field where the model supports it. You no longer have to parse reasoning markers out of the main output, which makes the model's behavior easier to debug. - Structured outputs. Beyond format: json, which asks for valid JSON, Ollama is moving toward fuller structured output. That includes schema hints, such as format: with the schema defined in the Modelfile or system prompt. The aim is more consistent data, especially for constrained values such as enums, with a check that the output matches the structure. Advanced features work best with larger models on strong hardware. Modern NVIDIA RTX GPUs help here, as I describe in my [post on NVIDIA GPUs and Ollama](/blog/nvidia-gpu-ollama-local-ai-powerhouse). If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # My most visited n8n AI workflows Source: https://workflows.diy/blog/top-n8n-ai-automation-workflows-by-popularity - Why: To show which n8n templates draw the most attention, to help users find popular automations for AI tasks, and to share those numbers. - Challenge: With a library of over 30 workflow templates, it is useful to see which ones get the most views. The view counts show early interest and discovery. - Outcome: A blog post with a table of my n8n workflow templates, ranked by Total Visitors count. It gives transparency and points users to popular AI automations on n8n. - Learnings: The Total Visitors counts show strong interest in AI content creation for social media and SEO, YouTube automation, RAG chatbots and local LLM solutions. These areas look like key pain points or interests for n8n users. - AI approach: Many of these top workflows use AI, from OpenAI, Google Gemini, DeepSeek and local Ollama models to services like Jina.ai and Perplexity. - Models used: This post ranks my n8n workflow templates by their Total Visitors count, showing which AI automation templates the community views most. [ All writing ](/blog) May 18, 2025 # My most visited n8n AI workflows My multi-platform social media content template leads my n8n templates with 38,157 Total Visitors on n8n.io, ahead of YouTube summarization at 21,447. Total Visitors on n8n shows which of my workflow templates people discover and explore most. Thank you to everyone who has viewed, used, adapted or given feedback on these templates. ## Top n8n workflow templates by total visitor count The table lists my public n8n workflow templates, sorted from the most to the fewest Total Visitors, based on the latest report data. The count is how many times each workflow page has been viewed. Find these and more on my [n8n Creator Page](https://n8n.io/creators/joe/). Rank Workflow Template Name Total Visitors Created At 1 Automate Multi-Platform Social Media Content Creation with AI 38,157 Mar 3, 2025 2 AI-Powered YouTube Video Summarization & Analysis 21,447 Dec 29, 2024 3 AI Powered RAG Chatbot for Your Docs + Google Drive + Gemini + Qdrant 18,858 Feb 23, 2025 4 Automated Social Media Content Publishing Factory + System Prompt Composition 13,973 Mar 11, 2025 5 AI Agent Chatbot + LONG TERM Memory + Note Storage + Telegram 13,470 Feb 9, 2025 6 Generate SEO-Optimized WordPress Content with AI Powered Perplexity Research 12,185 Mar 23, 2025 7 DeepSeek V3 Chat & R1 Reasoning Quick Start 11,079 Jan 22, 2025 8 Private & Local Ollama Self-Hosted AI Assistant 9,606 Jan 15, 2025 9 Telegram Messaging Agent for Text/Audio/Images 8,896 Jan 18, 2025 10 Empower Your AI Chatbot with Long-Term Memory and Dynamic Tool Routing 8,299 Feb 27, 2025 11 Perplexity Research to HTML: AI-Powered Content Creation 7,971 Dec 29, 2024 12 DeepSeek AI Agent + Telegram + LONG TERM Memory 7,170 Feb 8, 2025 13 Build a Web Search Chatbot with GPT-4o and MCP Brave Search 7,150 Mar 17, 2025 14 Advanced AI Powered Document Parsing & Text Extraction with Llama Parse 5,050 Feb 25, 2025 15 The Ultimate Free AI-Powered Researcher with Tavily Web Search & Extract 4,718 Jan 21, 2025 16 Use OpenAI to Transcribe Audio + Summarize with AI + Save to Google Drive 4,563 Mar 3, 2025 17 Ultimate AI-Powered Chatbot for YouTube Summarization & Analysis 3,879 Feb 20, 2025 18 Confluence Page AI Chatbot Workflow 3,626 Feb 25, 2025 19 Essential Multipage Website Scraper with Jina.ai 3,329 Feb 20, 2025 20 Multi-AI Agent Chatbot for Postgres/Supabase DB and QuickCharts + Tool Router 3,096 Mar 5, 2025 21 Your First Wordpress + AI Content Creator - Quick Start 3,064 Feb 23, 2025 22 Private & Local Ollama Self-Hosted + Dynamic LLM Router 2,851 Mar 12, 2025 23 AI Agent for n8n Creators Leaderboard - Find Popular Workflows 1,952 Feb 19, 2025 24 AI Agent Chatbot with Jina.ai Webpage Scraper 1,818 Feb 19, 2025 25 PDF2Blog - Create Blog Post on Ghost CRM from PDF Document 1,654 Nov 4, 2024 26 Analyze YouTube Video for Summaries, Transcripts & Content + Google Gemini AI 1,633 Mar 22, 2025 27 Easy WordPress Content Creation from PDF Docs + Human in the Loop Gmail 1,473 Feb 25, 2025 28 AI Agent for Top n8n Creators Leaderboard Reporting 1,209 Feb 19, 2025 29 Compare Local Ollama Vision Models for Image Analysis using Google Docs 1,028 Mar 16, 2025 30 YouTube Video Comment Analysis Agent 941 Feb 21, 2025 31 Monitor Favorite YouTube Channels Through RSS feeds and Receive Notifications 833 Feb 24, 2025 32 Nostr #damus AI Powered Reporting + Gmail + Telegram 729 Feb 19, 2025 33 Automated Workflow Backups to Google Drive 601 Feb 23, 2025 Analyze YouTube Video for Summaries, Transcripts & Content + Google Gemini AI, rank 26 in the table, in the n8n editor. ## Interpreting the visitor counts The Total Visitors counts show which workflow concepts draw attention. High counts often point to: - Popular problem areas. Social media automation, YouTube content analysis and RAG (Retrieval Augmented Generation) are the topics people look at most. - Emerging technologies. Workflows that use newer models or approaches, such as local LLMs (Ollama, DeepSeek) and chatbots with long-term memory, attract exploration. - Broad applicability. Templates that solve common content creation or research tasks tend to appeal to more people. The counts show what people look for across AI automation scenarios. This helps me decide which templates to build next. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # How Supabase runs the PlantDex backend Source: https://workflows.diy/blog/understanding-baas-supabase-plantdex-backend - Why: To explain BaaS to developers and show what Supabase brought to PlantDex, and why it suits modern web apps. - Challenge: Developers newer to full-stack work, or focused on the frontend, often find backend development hard or slow. BaaS removes much of that work. - Outcome: An explanation of BaaS benefits (speed, scalability and less management) and a walk through Supabase's PostgreSQL, Auth, Storage and Edge Functions as used in PlantDex. - Learnings: BaaS platforms like Supabase speed up development with ready-made backend infrastructure. Supabase is open source and built on standard technology such as PostgreSQL, which makes it a flexible alternative to other BaaS providers. - AI approach: This post is explanatory. The PlantDex project made heavy use of Supabase and followed an AI-first method, where an LLM implemented all Supabase integrations from architectural guidance. - Models used: This post explains Backend-as-a-Service (BaaS) and how Supabase, an open source Firebase alternative, provided the backend for PlantDex. [ All writing ](/blog) May 21, 2025 # How Supabase runs the PlantDex backend Supabase gave PlantDex a database, user accounts, file storage and serverless functions without a custom backend. A backend-as-a-service supplies these parts pre-built, so a small team does not build and run its own server for them. ## What is backend as a service (BaaS)? For a solo developer or a small team, building a backend by hand is slow and expensive. It means server-side logic, databases, user authentication, file storage and the infrastructure behind the frontend. Backend as a service (BaaS) platforms provide pre-built backend components that you integrate into your app. Instead of building everything from scratch, you use these ready-made services through APIs and SDKs. Developers can focus on the frontend and core application logic, which speeds up development. Common services offered by BaaS providers include: - User authentication for sign-ups, logins, password resets and social logins. - Managed cloud databases, SQL or NoSQL, for data persistence. - Cloud storage for user-uploaded files such as images, videos and documents. - Serverless functions that run custom backend code without managing servers. - Real-time features for live chat and instant data sync. - Many providers also offer analytics, push notifications and hosting. BaaS usually brings faster development, less operational overhead, built-in scalability and often lower initial costs. ## Why Supabase became PlantDex's backend PlantDex is our plant identification and cataloging app. We needed a backend that developers could use easily and that could scale. After evaluating options, we chose **Supabase**, and it carried much of the backend work. Supabase calls itself an open source Firebase alternative, and its foundation on standard technologies is what sets it apart for us. This is how Supabase powered PlantDex. Our AI development assistant implemented all of the integrations under architectural guidance. ## 1. PostgreSQL database Every Supabase project comes with a dedicated PostgreSQL database. We defined the plants table with a clear schema and relationships, such as linking plants to users. Our AI assistant generated the DDL (Data Definition Language) for the table and used Supabase's client library to work with it. ## 2. Supabase Auth for user management Supabase Auth handles user accounts, sign-ups with email verification, logins and password resets. Our AI assistant connected it to the Vue 3 frontend and the Pinia authStore. It set up listeners for authentication state changes and protected the routes. ## 3. Row Level Security for data protection Supabase inherits Row Level Security (RLS) from PostgreSQL. We defined RLS policies in the database so users can access and change only their own plant data. The policies enforce this at the database level, not only in application code. ## 4. Supabase Storage for file management PlantDex needed to store user-uploaded plant photos. Supabase Storage handled this, with RLS policies so users can manage only files in their own paths (e.g., [USER_ID]/[PLANT_ID]/ and below). The AI assistant implemented photo uploads, deletions and URL retrieval. ## 5. Edge Functions for server-side logic Some tasks need server-side processing and secure database operations, such as the "replace all" data import. Supabase Edge Functions run on Deno and fit that work. Our AI assistant wrote the TypeScript Edge Function that validates JSON and runs batch database operations. The client invokes it securely. ## Developer experience and AI collaboration The well-documented JavaScript client library (@supabase/supabase-js) made it easy for our AI assistant to write the client-side code for these features. The Supabase CLI was also useful for local development of migrations and Edge Functions. With Supabase as the BaaS, the AI could focus on features and UI logic instead of backend setup and boilerplate. This AI-first approach took PlantDex from concept to MVP. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Shadow AI is already running in your business Source: https://workflows.diy/blog/unseen-ai-revolution-business-impact - Why: To show how much AI is already changing business operations, workforce behavior and leadership strategy, beyond the buzzwords. - Challenge: The gap between slow corporate AI adoption and fast, covert use by individual employees ('Secret Cyborgs'). It challenges leaders to use AI personally before they judge its effect on organizational structure, talent and strategy. - Outcome: A blog post that argues against conventional thinking about AI. It covers 'Secret Cyborgs', the risk to junior skill building, the changing definition of core skills, and why leaders need to rethink how work is organized, from HR to meeting culture. - Learnings: AI is a force for organizational redesign. Employees are far ahead of their employers in adoption, which creates a 'Secret Cyborg' workforce. Leaders must use AI personally to understand its effects. Juniors who hand their work to AI may stop building skills. Strategy needs time to reflect alongside governance. - AI approach: The post is a product of an AI-assisted workflow. It started from a synthesis of several expert sources in NotebookLM, then an AI assistant refined it. It analyzes human-AI interaction at the organizational level, using real-world studies and expert commentary. - Models used: This post was drafted using Google's NotebookLM to synthesize multiple sources and was then refined in collaboration with an AI assistant to match the blog's distinct style. [ All writing ](/blog) April 20, 2026 # Shadow AI is already running in your business Employees already run AI agents and tools outside IT governance, and the AI-use policies most companies wrote in 2024 don't cover them. Leaders who treated AI as something to ship have pulled ahead of leaders who treated it as something to get their head around. The real use is happening on employees' screens, outside the official pilot programs. ## Your employees are already "Secret Cyborgs" Your employees are finding that AI makes them far more efficient. Your company is probably reporting only "small to moderate gains." A large part of your workforce is probably using AI in secret. Employees have rational reasons for the secrecy. - Employees worry that showing their new efficiency will lead to headcount cuts for themselves or their colleagues. - Some people who produce "incredible outputs" with AI hide their methods to protect a reputation for brilliance. They do not want to credit their AI partner. - Many expect efficiency to bring more work without more pay or recognition. - Vague threats about improper AI use and "terrifying blanket policies" push adoption into the shadows. That creates risks for data security and governance. Your workforce may already be changing while your organization sees none of it. ## Employees now run agents The pattern matured in 2025. Secret cyborgs pasted prompts into ChatGPT in a closed browser tab. In 2026 the problem is shadow agents: employees spin up autonomous agents with Claude Code, custom GPTs, Copilot Studio or MCP-connected tools. These agents read company databases, call internal APIs and take multi-step actions, all outside IT governance. This is a different class of risk. A leaked prompt is embarrassing. An agent with stale credentials that reads customer data and writes to your CRM is a breach waiting to happen. The AI-use policies most companies wrote in 2024 don't cover any of it. Employees already run AI in production without your knowledge, outside the official pilots. ## Leaders have to use AI themselves before they can judge it Leaders have to close this gap. Ethan Mollick, an author and researcher, argues that leaders who delegate AI use, get reports back or only read about it do not get it. He puts it bluntly: "unless you've had an existential crisis... you haven't got AI." Real understanding comes from personal use that changes how you see work. Start with [advanced prompting techniques](/blog/gemini-2-5-pro-ai-studio-power-tips-revised) or try the [range of AI models](/blog/openrouter-ai-polyamory-mastering-your-llm-harem) yourself. The deeper problem is that for decades, organizations have given up on radical redesign. The org chart was invented in 1855 to run a railroad, and it has changed little since. Companies have handed this work to consultants, yet "nobody has special information about how to best use AI at your company." The playbook for this new world does not exist yet. You write it yourself, often starting with [clearly defining user needs](/blog/user-stories-foundation-for-efficient-development) before you consider the technology. ## AI behaves less like software - Unlike traditional software, which only executes commands, AI "works like a person." It can argue, refuse tasks, and sometimes you have to justify to the AI why it should do a step. Managing it takes the same skills as managing a person. - AI can narrow creative output. In [a 2023 BCG experiment with GPT-4](https://www.bcg.com/publications/2023/how-people-create-and-destroy-value-with-gen-ai), consultants who used it for creative ideation produced ideas that were 41% less diverse as a group. Frontier models have improved, but the homogenization risk hasn't disappeared. AI can also raise the bar: AlphaGo beat the world's best Go players and inspired them to invent moves never seen before. - AI can coach as well as do tasks. In [a field experiment with Kenyan entrepreneurs](https://www.hks.harvard.edu/centers/cid/publications/uneven-impact-generative-ai-entrepreneurial-performance), high performers who got advice from a GPT-4 mentor did just over 15% better, while low performers did about 8% worse. AI can also act as a "brutally honest team coach," analyzing meeting dynamics and communication patterns. One use is stopping a meeting to ask an AI whether it should continue. ## AI changes how talent develops and what work is for - Juniors who use AI to do their work may stop building the skills that normally come from doing it themselves. Managers find that AI "does a better job and never complains." Talent may stop growing through the hierarchy the way it used to. - Employees will work out how to use AI on their own, so HR has to design the organizational structures, reward systems and coaching models for an AI-augmented workforce. HR also needs to understand [how AI agents and workflows are reshaping roles](/blog/orchestrating-intelligence-workflows-agents-mcp-n8n). - Teams need time set aside to reflect, or AI only helps them do bad or pointless work faster. - The purpose of work is shifting. When a research report that took weeks takes minutes, "the bottleneck isn't the research anymore, it's figuring out what research to do." When code can be written instantly, as in projects like the [AI-coded Desktop Assistant](/blog/power-stack-desktop-ai-assistant), the challenge becomes "understanding what to build." AI forces you to rethink why you do each task. ## AI raises the average, so curation becomes the job - AI raises average performers. Bad writers become average, and average developers become good. AI will force a recalibration of what counts as average, which pushes true experts to find new ground to stand out. - Creators are becoming curators. They now select from multiple AI-generated options instead of starting from scratch. That raises a question: "Do we value curation as much as creation?" The risk is a "diminished sense of responsibility" for the output, so humans must act as orchestrators and evaluators who own what ships. ## Leaders should start with three actions A deliberate change management plan helps you shape an [AI-first future](/blog/ai-first-vue3-site-migration-flawless-execution) where humans orchestrate the work. The [CEO playbook](/ai-for-ceos) and the [operational framework](/ai-operations) are where to start. Use [resources for AI development and consultation](/blog/level-up-vibe-coding-6-essential-resources) to get started. - Use AI yourself before you judge its effect, because Ethan Mollick argues that leaders who delegate AI use or only read reports do not get it. - Govern the agents as well as the chatbots, starting with the credentials each one holds and the systems it can write to. - Own the unit economics of AI, because token use, growing context windows, agent loops and multi-model fallback each add cost, and those costs compound before anyone budgets for them. If you want help with this, [get in touch](/#contact). [ All writing ](/blog) --- # Nail the user story before you build Source: https://workflows.diy/blog/user-stories-foundation-for-efficient-development - Why: To show why user stories should come before development, especially in automation projects built with n8n or AI-assisted tools. - Challenge: The temptation to jump into implementation (for example, 'How can we build X with Y tool?') before the 'Who, What and Why' are clear from the user's perspective. That leads to rework and misaligned solutions. - Outcome: A solid user story acts as a compass. It keeps manual, AI-assisted and n8n-based development aimed at real user value and the right problem. - Learnings: Defining and refining user stories early saves time and resources later. It aligns expectations, clarifies scope and ensures the product meets user needs. This matters as much for n8n workflows as for traditional software. - AI approach: The insights came partly from an AI-assisted session. We explored technical possibilities, then went back to the foundational user story, which matches the post's core message. - Models used: This post reflects on a recent client session where technical deep dives came before a shared understanding of the user story. It shows how much time is saved by putting user needs first. [ All writing ](/blog) May 24, 2025 # Nail the user story before you build A clear user story saves rework on n8n workflows and AI-assisted builds, because it fixes the problem before the solution. The format names the beneficiary, the action and the value. ## Why user stories must come first Nail down the user story before any substantial build begins. I relearned that recently, in a session to design an automated system. With tools like n8n, the common mistake is to dive straight into the "how." What nodes do we need? Which AI model is best? Exploring technical options early is not wrong. It can spark ideas and reveal real constraints. But without a clear picture of what the end user needs to achieve, and why, those explorations become detours rather than paths to a useful solution. ## What is a user story, and why does it matter for automation? A user story is a short description of a feature or requirement, told from the view of the person who will benefit from it. The classic format is: "As a [type of user], I want [an action/goal] so that [a benefit/value]." The format makes you define three things: - Who is the primary beneficiary? Their role, daily context, pain points and motivations are essential. - What specific action do they need to perform, or what goal do they need to accomplish? That defines the core functionality and scope. - What tangible value or benefit do they gain? That is the main driver for the feature and the key to prioritizing development. In n8n workflow development, or any automation project, this principle matters most. An n8n workflow is a set of connected nodes that solves a user's specific challenge. Without a clear user story, your automation might solve the wrong problem, or solve the right one in an inefficient, overly complex way. ## Refocusing on user value before technical deep dives Consider a recent project. We were deep in discussion about Python scripts, data processing techniques and application architectures. We debated LLMs, data parsing strategies and system integrations. That was productive for mapping what was technically possible. The breakthrough came when we paused the technical brainstorm and asked: "Okay, stepping back, what exactly does the end-user (or the business stakeholder representing them) fundamentally need to achieve with this system? What are their core acceptance criteria from a business value and user experience perspective?" That is when focus can shift from an existing technical document to a user-centric requirements list or a set of business objectives. Reread through the lens of who, what and why, those documents are often collections of high-level user stories or business needs. Grounded in them, the technical path forward often becomes clearer. The earlier exploration shows what is possible, but the user story decides what is necessary and valuable. For instance, a core user need might read: "As a marketing manager, I want an automated way to identify and repurpose our most engaging existing content for new campaigns, ensuring it's timely and hasn't been overused, so that I can maximize content ROI and save manual research time." That is a solid user story, or a candidate for an epic. It can be broken into specific technical tasks, each tied to that need. ## Benefits of user story-driven development Defining and refining user stories up front pays off, whether you work solo, on a large agile team or with an AI coding partner: - Everyone involved, from stakeholders to developers, your future self and any AI assistant, shares the goal and the "why" behind the work. - Development gravitates toward the features that deliver the most user value first. - You are less likely to build the wrong solution or features users don't need, which cuts costly rework later. - Clear user stories lead to clearer acceptance criteria. That makes it easier to define "done" and to verify the solution. - When you prompt an LLM to generate code, such as an n8n workflow, a Python script, a UI component or architecture suggestions, the user story gives the AI the intent behind the request. That leads to output that is more relevant and fits the purpose. - User stories set natural boundaries for features. That helps prevent "scope creep" and keeps the project on essential value. Before you connect those n8n nodes, draft that complex system prompt for your AI, or write that first line of code, pause and ask: "Have I nailed the user story?" If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog) --- # Migrating my vanilla JS site to Vue 3 Source: https://workflows.diy/blog/vanillajs-to-vue3-rewrite - Why: To update my vanilla JavaScript personal and business website, making it easier to maintain, extend and modernize with Vue 3, Vite, TypeScript and Tailwind CSS, and to add a blog section. - Challenge: Building a multi-page feel with Vue Router, sharing UI state such as the mobile menu through composables, using Tailwind CSS well, and porting existing content and logic into Vue components. - Outcome: A component-based Vue 3 single-page application (SPA), which is this website, with a clean, modern design, better performance, a new dynamic blog and a more organized codebase. - Learnings: Vue 3's Composition API organizes logic well. Vite gives a fast developer experience. Tailwind CSS speeds up UI work. TypeScript catches errors early. Proper component design keeps a Vue app scalable. - AI approach: The LLM served as a Vue 3 and Tailwind CSS expert. It helped translate vanilla JS concepts into Vue's reactive model, suggested component structures and best practices, and helped set up the router and composable-based state management. - Models used: My LLM assistant (Google Gemini 2.5 Pro Preview 05-06) was a useful sounding board for architectural decisions, component structure and debugging Vue 3 reactivity issues. It helped generate 100% of the code for the entire site. [ All writing ](/blog) May 14, 2025 # Migrating my vanilla JS site to Vue 3 We moved a hand-built vanilla JavaScript site to a Vue 3 app built with Vite. The hardest part was turning static pages into components that Vue Router manages. My previous personal and business website was built with pure HTML, CSS and vanilla JavaScript. It needed a modern overhaul. The goals were: - Improve maintainability and scalability. - Improve the developer experience (DX). - Modernize the look and feel. - Add a blog to share my AI development work. I chose Vue 3 for its component model and reactive data binding. I chose Vite for fast development and build times, TypeScript for type safety, and Tailwind CSS for utility-first styling. Moving from static HTML files to a dynamic single-page application (SPA) raised several challenges. - The biggest hurdle was the site's structure. Instead of separate HTML pages, I needed a component-based architecture managed by Vue Router. That meant finding reusable UI elements and wrapping them in Vue components. - Splitting the UI into components, such as headers, footers, sections and cards, took planning. The Composition API with script setup made the process cleaner. - The mobile menu needed state shared across components. Rather than reaching for a full state manager like Pinia, I used Vue composables (useMobileMenu.ts), which are lightweight. - Moving from my custom CSS to Tailwind CSS meant learning the utility-first approach. It paid off in development speed. The @tailwindcss/typography plugin styled the blog content. - Building the blog from scratch was a mini-project. It included a data structure for posts (blogPosts.ts), components for blog cards (BlogPostCard.vue) and full posts (BlogPostContent.vue), and dynamic routing with Vue Router for post slugs. - Adding TypeScript meant defining interfaces for props, data structures and component logic. It added overhead at first. The gains in code clarity and error prevention were worth it. This migration produced the website you are reading now. It is a responsive SPA built with current web tools. The main results are: - A modular, component-based architecture that is easier to manage and extend. - A clean, modern design built with Tailwind CSS. - Better performance from Vite and Vue 3 optimizations. - A blog system that makes content updates easy. - A better developer experience. ## Key learnings - The Vue 3 Composition API organizes component logic well, especially with script setup. Reusable logic moves into composables easily. - Vite's developer experience is fast. Hot module replacement (HMR) is near-instant, and builds are quick. - Tailwind CSS gets faster to use once the utility-first approach clicks. Customizing tailwind.config.js and using @apply for common component patterns works well. The @tailwindcss/typography plugin suits markdown-style content. - Vue Router is essential for SPA navigation. Configuring routes, handling dynamic parameters such as blog post slugs, and customizing scroll behavior are straightforward. - TypeScript with Vue gives autocompletion and type checking, and it catches errors early. Interfaces for props (`defineProps()`) and data structures make components more predictable. - Importing images and other assets directly into components is simple. Vite handles bundling and path resolution. - Balancing global styles and scoped component styles matters. Global styles in src/assets/css/main.css hold base styling and the Tailwind imports. ## How the AI helped My LLM assistant was a helpful partner throughout this migration. It helped with: - Brainstorming the initial project structure for a Vue 3, Vite and TypeScript setup. - Generating boilerplate code for Vue components and routing configurations. - Translating vanilla JavaScript logic and CSS styles into their Vue and Tailwind equivalents. - Suggesting layout ideas and Tailwind CSS class combinations for various UI elements. - Debugging TypeScript errors, Vue reactivity quirks and router issues. - Explaining Vue 3 concepts and best practices as I encountered them. If you want help with work like this, [get in touch](/#contact). [ All writing ](/blog)