<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Yacov drori</title>
    <description>The latest articles on DEV Community by Yacov drori (@yacovdroridev).</description>
    <link>https://dev.to/yacovdroridev</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3991490%2Fe66e88bf-797c-416c-aa06-b441cf6df6bd.jpg</url>
      <title>DEV Community: Yacov drori</title>
      <link>https://dev.to/yacovdroridev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yacovdroridev"/>
    <language>en</language>
    <item>
      <title>Collaborative Journey: Building Marketing‑Automation Tools with Yacov Drori</title>
      <dc:creator>Yacov drori</dc:creator>
      <pubDate>Thu, 02 Jul 2026 12:08:32 +0000</pubDate>
      <link>https://dev.to/yacovdroridev/collaborative-journey-building-marketing-automation-tools-with-yacov-drori-5dl9</link>
      <guid>https://dev.to/yacovdroridev/collaborative-journey-building-marketing-automation-tools-with-yacov-drori-5dl9</guid>
      <description>&lt;p&gt;When Yacov Drori (­יעקב דרורי) first teamed up with his partner Miriam, the goal was simple yet ambitious: create a self‑hosted marketing‑automation platform that could actually talk to the people who use it, without leaning on third‑party APIs that keep hitting 403 roadblocks. What emerged was a hybrid stack that feels as much like a laboratory as it does a production‑ready product—Flask for the backend, vanilla JavaScript for the UI, Ollama + Gemma for Hebrew‑aware language generation, and a sprinkle of Flutter magic for a companion mobile app.&lt;br&gt;
Below is a quick tour of the pieces they’ve built together, the dev.to articles that walk readers through each layer, and why the whole experiment matters to anyone looking to blend local AI, modern web aesthetics, and real‑world workflow automation.&lt;br&gt;
The Core Architecture&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Flask‑Single‑File Backend – All campaign logic lives in a single, well‑structured Flask script. It ships over Tailscale Funnel, so Miriam can open the app in any browser without installing anything.&lt;/li&gt;
&lt;li&gt;Local LLMs via Ollama – Instead of paying for cloud‑based Gemini or GPT‑4 calls, Yacov chose Ollama and the Gemma family (gemma2:2b as the default model, gemma2:9b as a fallback). A tiny patch in llm_client.py fixes JSON‑escaping edge cases, ensuring the generated JSON that drives the automation is always parsable.&lt;/li&gt;
&lt;li&gt;SQLite Data Store – Light‑weight, file‑based storage holds campaign schedules, WhatsApp webhook payloads, lead scores, and user preferences. No external database means the entire system stays portable and easy to back up.&lt;/li&gt;
&lt;li&gt;Modern CSS + RTL Support – Tailwind CDN powers the UI, delivering glass‑morphism cards, smooth gradients, and subtle animations. Every stylesheet is written with right‑to‑left (RTL) layout in mind, so Hebrew content renders naturally alongside English snippets.
All of this lives in the public repo github.com/yacovdroridev/marketing_automation—a transparent, open‑source playground for anyone who wants to replicate or extend the setup.
Dev.to Articles: A Step‑by‑Step Chronicle
Yacov and Miriam chronicled the entire journey in a series of posts that have become go‑to references for developers interested in similar stacks:
# | Title | What You’ll Learn
1 | From Idea to API: Building a Flask‑Based Marketing Automation Hub | Project bootstrap, Tailscale Funnel deployment, and the high‑level architecture diagram.
2 | Local LLMs for Hebrew Content: Why I Chose Ollama + Gemma | Model selection rationale, prompt engineering tips, and the _fix_json_escaping() patch that makes JSON parsing bullet‑proof.
3 | Real‑Time WhatsApp Interactions with whatsapp‑web.js | Hooking into the WhatsApp webhook, handling inbound/outbound messages, and testing with plain curl.
4 | Deploying a Single‑File Flask App with Modern CSS (Glassmorphism + RTL) | Styling tricks, responsive layout, and how to keep the entire UI in a single HTML file while supporting both LTR and RTL.
5 | Automated Campaign Testing with Curl &amp;amp; HTTP Checks | Their manual verification workflow, lightweight “CI‑lite” scripts, and why they opted out of formal test suites.
These articles are tagged #marketingautomation, #flask, #hermesagent, #ollama, #flutter, and they’re deliberately pragmatic—each one includes a fully copy‑paste‑ready code snippet and a short explanation of the trade‑offs they encountered.
The Applications They’ve Built
Application | Tech Stack | Highlights
Marketing Automation Hub | Flask + Tailwind CDN + vanilla JS | Single‑file backend, Tailscale‑exposed URL, full RTL support, manual verification via curl.
Food‑Tracker Flutter App | Flutter (Dart) + Google ML Kit (wrapped locally via Ollama) | Barcode/food‑recognition, nutrition snapshot generation, exportable Android APK (build/app/outputs/flutter-apk/app-arm64-v8a-release.apk).
Both projects share a common DNA: local‑first philosophy, modern UI without heavy bundlers, and a collaborative workflow where Miriam writes the copy and designs the user flows, while Yacov handles the backend plumbing, model integration, and deployment scripts.
Why This Matters to the Community&lt;/li&gt;
&lt;li&gt;Speed &amp;amp; Control – By staying local with Ollama, they eliminate latency spikes and avoid the dreaded “403 – Access Denied” errors that plague many cloud AI services.&lt;/li&gt;
&lt;li&gt;Privacy‑First – All sensitive campaign data—lead scores, user preferences, conversation histories—remain on‑device. No data leaves the server unless the user explicitly pushes it.&lt;/li&gt;
&lt;li&gt;Rapid Prototyping – A single Flask file means a new feature can be dropped in minutes and instantly testable via a simple HTTP request.&lt;/li&gt;
&lt;li&gt;Open Collaboration – Publishing the journey on dev.to creates a feedback loop; readers can suggest improvements, and Yacov &amp;amp; Miriam can iterate publicly, turning real‑world pain points into open‑source solutions.
Looking Ahead
Yacov has a handful of exciting road‑map items already brewing:&lt;/li&gt;
&lt;li&gt;Enhanced RTL Styling – More sophisticated right‑to‑left animations and transition effects for buttons, cards, and modals.&lt;/li&gt;
&lt;li&gt;Multi‑Account Isolation in Hermes Agent – Making it easier to spin up sandboxed app instances for different clients without cross‑contamination.&lt;/li&gt;
&lt;li&gt;AI‑Assisted Campaign Copy – Leveraging the same Gemma models to auto‑generate A/B subject lines, social snippets, and email drafts, all while keeping the generation pipeline fully local.
If any of these topics spark your curiosity, the repo is open for pull requests, issues, or just a friendly comment. Yacov enjoys chatting about deployment tricks, model quirks, or the subtle art of keeping a UI both sleek and accessible for Hebrew‑speaking users.
About Yacov Drori
Location: Nahariya, Israel
Languages: Hebrew, Russian, English
Focus: Building Flutter and Flask applications for marketing automation, experimenting with local LLMs, and turning complex workflows into simple, maintainable tools.
When he isn’t tinkering with code, you’ll find him hiking the Galilee, experimenting with new spice blends for his kitchen, or planning the next dev.to article that will help the community automate something they thought was impossible.
Happy hacking, and feel free to reach out if you want to collaborate, ask questions, or just discuss the future of local AI‑powered marketing automation!&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How I Built 4 Custom Apps in One Week to Solve My Real-Life Problems (With an AI Agent)</title>
      <dc:creator>Yacov drori</dc:creator>
      <pubDate>Fri, 19 Jun 2026 14:07:16 +0000</pubDate>
      <link>https://dev.to/yacovdroridev/how-i-built-4-custom-apps-in-one-week-to-solve-my-real-life-problems-with-an-ai-agent-13fh</link>
      <guid>https://dev.to/yacovdroridev/how-i-built-4-custom-apps-in-one-week-to-solve-my-real-life-problems-with-an-ai-agent-13fh</guid>
      <description>&lt;p&gt;We are always told that programming is a tool for problem-solving. But this week, I experienced this truth on a completely different level. Using my autonomous AI Agent (Hermes), software development became my real-time, daily survival tool. &lt;/p&gt;

&lt;p&gt;Instead of searching for half-baked third-party apps, dealing with intrusive ads, or compromising on terrible mobile UX, I spent the last few days building four highly customized, production-grade applications to solve exact friction points in my daily life and for my family.&lt;/p&gt;

&lt;p&gt;Here is the story of how these four apps came to life.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Remote Terminal (Defeating NoMachine's Screen Rotation Limit)
The Problem: I use NoMachine to control my main development PC remotely from my mobile phone. However, I ran into an incredibly frustrating limitation: there was absolutely no way to rotate the remote display viewport by 90 degrees to fit my mobile screen orientation properly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Solution: Instead of giving up or hunting for obscure system-level workarounds, I built Remote Terminal. It is a lightweight remote execution client designed with a single killer feature: a built-in, hardware-accelerated 90-degree viewport rotation. Now, I can access and control my remote terminal rig perfectly, at the exact angle I need.&lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Tefila Meditation (From Print Draft to Interactive PWA)
The Problem: I saw the draft of my wife's new meditation and prayer book right before it was sent to the physical print shop. I instantly realized that this content deserved an interactive, accessible digital life.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Solution: Within 24 hours, we built a generic, highly optimized book framework and compiled it as a Flutter Web PWA and Native Android App. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Autoplay-Safe Audio: Implemented a synchronous audio player engine to bypass aggressive mobile browser autoplay blocks.&lt;/li&gt;
&lt;li&gt;Beautiful Visuals: Added native vector-animated CustomPaint widgets (a flickering flame, flowing water, and rotating mandalas).&lt;/li&gt;
&lt;li&gt;Offline-First Premium Model: Built a secure offline licensing system that unlocks chapters via secret coupon codes.&lt;/li&gt;
&lt;li&gt;Live Proofreading Portal: Included a hidden, secure proofreader screen (edit2026) so she can edit chapters and export updated Dart code directly from her phone!&lt;/li&gt;
&lt;li&gt;Deployed live on GitHub Pages: Check it out here.&lt;/li&gt;
&lt;/ul&gt;




&lt;ol&gt;
&lt;li&gt;My Personal Gym Companion
The Problem: Most fitness and gym trackers on the app store are bloated with subscription popups, social feeds, and annoying ads. I just wanted a clean, fast way to log my workout routines and track my personal metrics while at the gym.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Solution: While heading out to my workout session, I scaffolded a lightweight, completely local Gym Companion app. It is entirely ad-free, runs completely offline, and lets me track my progress, sets, and health metrics with zero distraction. &lt;/p&gt;




&lt;ol&gt;
&lt;li&gt;Today: Visual Food Tracker (With Gemini Vision AI Integration)
The Problem: Today, I visited my diabetes specialist. She requested that I start keeping a meticulous daily food diary to monitor my dietary habits. The thought of manually typing every meal, ingredient, and portion size into a clunky text-based app sounded exhausting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Solution: I went home and, within a few hours, we built Food Tracker. It is an offline-first, visual-centric tracking app. I just released version 3.0:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-Image Support: You can snap multiple photos per meal to track individual food items separately.&lt;/li&gt;
&lt;li&gt;Smooth Carousel UI: On the home screen, meal cards turn into interactive swipeable carousels (PageView) so you can flip through the photos of your meal.&lt;/li&gt;
&lt;li&gt;Google Gemini Vision AI Integration: I integrated Google's official google_generative_ai SDK (using Gemini Flash). You take a photo, tap the "🪄 Smart AI Analysis" button, and the AI:

&lt;ol&gt;
&lt;li&gt;Identifies the food items and auto-updates the captions for each image.&lt;/li&gt;
&lt;li&gt;Calculates estimated nutritional values (calories, protein, carbs, and fats).&lt;/li&gt;
&lt;li&gt;Automatically writes a detailed nutritional summary in the notes and suggests a cohesive title for the entire meal in Hebrew.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;The Takeaway: Software as a Personal Utility&lt;/p&gt;

&lt;p&gt;We are living in an era where the barrier between a raw idea and a working, compiled application has completely evaporated. When you pair your domain knowledge with a highly capable, autonomous AI agent, you stop being a mere consumer of software. &lt;/p&gt;

&lt;p&gt;You become a producer of your own tools, tailoring technology to fit your life, your health, and your family's needs in real-time.&lt;/p&gt;

&lt;p&gt;What is the next custom app you are going to build for yourself? Let me know in the comments!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hermes</category>
      <category>appdev</category>
      <category>flutter</category>
    </item>
    <item>
      <title>From Silicon to PWA: My Experience Deploying an Autonomous AI Agent (Hermes) Directly into My Daily Workflow</title>
      <dc:creator>Yacov drori</dc:creator>
      <pubDate>Thu, 18 Jun 2026 20:44:34 +0000</pubDate>
      <link>https://dev.to/yacovdroridev/from-silicon-to-pwa-my-experience-deploying-an-autonomous-ai-agent-hermes-directly-into-my-daily-1bac</link>
      <guid>https://dev.to/yacovdroridev/from-silicon-to-pwa-my-experience-deploying-an-autonomous-ai-agent-hermes-directly-into-my-daily-1bac</guid>
      <description>&lt;p&gt;As an engineer with 20+ years of experience working from the silicon up—programming bare-metal C, motion control, and industrial automation—I’ve always been skeptical of "AI coding assistants." Writing auto-complete snippets is easy; architecting complex, production-ready systems is a completely different beast.&lt;/p&gt;

&lt;p&gt;But recently, during the launch of my new ventures—specifically a modular Flutter Web PWA Book-to-App Framework (tefila_meditation), a Go-native desktop app (remote-viewer), and optimization of a women's health cycle calculator—I decided to do something different. &lt;/p&gt;

&lt;p&gt;I deployed Hermes (by Nous Research), an autonomous, CLI-driven AI agent, directly into my Linux terminal environment.&lt;/p&gt;

&lt;p&gt;Unlike standard chat widgets that sit in a browser tab and ask you to copy-paste code, Hermes was deployed locally with full filesystem, package manager, and terminal access. It doesn't write "stubs" or "placeholders"; it writes code, compiles it, analyzes the static output, runs git, and deploys the builds directly.&lt;/p&gt;

&lt;p&gt;Here are 3 real-world battles we won together:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Mobile Autoplay &amp;amp; PWA Asset Path Hell&lt;br&gt;
When building our offline-ready Daily Quiet Corner playing looping ambient nature audio, we hit a classic mobile web wall. Modern browsers aggressively block audio unless triggered by an immediate, synchronous user gesture. Furthermore, Flutter Web compiles assets into a double-nested structure (assets/assets/audio/...), causing a triple-asset path resolution (assets/assets/assets/...) and silent 404s.&lt;br&gt;
• How we solved it: Hermes analyzed the network resource requests of our test browser, isolated the 404s, and refactored our player into a synchronous execution flow to preserve the browser's "user gesture token." It dynamically switched the source loader to use native UrlSource with double-asset routing on Web, while preserving native AssetSource on mobile.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Timezone-Drift &amp;amp; DST Calculations in Python/Dart&lt;br&gt;
Our cycle calculations were suffering from a classic bug: seasonal Daylight Saving Time (DST) transitions were introducing 23-hour and 25-hour day calculations, shifting predictions.&lt;br&gt;
• How we solved it: Instead of applying patchy offset fixes, we normalized all datetime math to UTC across both the Dart frontend and Python backend, backed by comprehensive unit tests to ensure 100% mathematical consistency during seasonal clock switches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Desktop Linux Toolchain Compilation&lt;br&gt;
When building our Go-native desktop app "remote-viewer" on Ubuntu, we ran into native GStreamer link errors during CMake. Hermes parsed the compiler logs, isolated the missing native dev packages, and provided the exact GStreamer installation dependencies to unblock Android Studio.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Key Takeaways:&lt;br&gt;
• Say Goodbye to Async Gaps in UI Events: Mobile browsers are ruthless with autoplay blocks. If you have even a single 'await' microtask between a click and a '.play()' call, the browser discards the gesture token. Keep your media play setups strictly synchronous.&lt;br&gt;
• Flutter Web Asset Caching is Aggressive: Service workers in PWAs cache Compiled JS so heavily that standard refreshes won't show updates. Always perform a hard cache-reload (Ctrl+F5) when testing asset-prefix changes.&lt;br&gt;
• AI Agents as Partners, Not Replacements: The magic happens when you combine systems-thinking (the human) with rapid execution and iteration (the agent). I guided the architecture; Hermes handled the boilerplate, compilations, and repo synchronization.&lt;/p&gt;

&lt;p&gt;Deploying Hermes directly into my terminal didn’t make me code less; it allowed me to build faster, cleaner, and with much higher confidence.&lt;/p&gt;

&lt;p&gt;Are you integrating AI agents into your development workflows, or keeping them in the sandbox? Let’s discuss!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>hermes</category>
      <category>flutter</category>
      <category>go</category>
    </item>
  </channel>
</rss>
