<?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: ahmad rabbani</title>
    <description>The latest articles on DEV Community by ahmad rabbani (@ahmad_rabbani_50bec5adbef).</description>
    <link>https://dev.to/ahmad_rabbani_50bec5adbef</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1574413%2F312d1a16-bce2-4fd3-90eb-85cd0701f275.jpg</url>
      <title>DEV Community: ahmad rabbani</title>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ahmad_rabbani_50bec5adbef"/>
    <language>en</language>
    <item>
      <title>From Tools to Agentic Systems</title>
      <dc:creator>ahmad rabbani</dc:creator>
      <pubDate>Wed, 29 Apr 2026 21:26:02 +0000</pubDate>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef/from-tools-to-agentic-systems-565j</link>
      <guid>https://dev.to/ahmad_rabbani_50bec5adbef/from-tools-to-agentic-systems-565j</guid>
      <description>&lt;p&gt;The announcement I picked&lt;br&gt;
The Google Cloud NEXT '26 release that spoke to me most was Gemini Enterprise Agent Platform. Google described it as a platform to build, scale, govern, and optimize agents, with capabilities such as Agent Studio, agent-to-agent orchestration, agent registry, agent identity, agent gateway, and observability.&lt;br&gt;
That matters because it changes the developer mindset. We are no longer only adding AI features to apps. We are designing systems where agents can observe work, take action, coordinate with other agents, and improve outcomes over time.&lt;br&gt;
My honest reaction: this is bigger than a product update. It is a signal that the next serious software products will not be judged only by what feature they provide, but by whether they can evaluate, adapt, and improve themselves.&lt;br&gt;
The old way: build a tool and ship it&lt;br&gt;
Most developers, including me, often build tools in a simple pattern:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A user uploads a file.&lt;/li&gt;
&lt;li&gt;The tool performs one task.&lt;/li&gt;
&lt;li&gt;The user downloads the result.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The workflow ends.&lt;br&gt;
That works for utility websites, but it creates a ceiling. A PDF compressor compresses. An image converter converts. A text formatter formats. Useful, yes - but static.&lt;br&gt;
The tool does not ask:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Was the output actually good?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Was the process fast enough?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Did the user get the best possible result?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Could the tool improve next time?&lt;br&gt;
Google Cloud NEXT '26 pushed me to think differently. What if every tool had an evaluation layer? What if the app did not only execute the task, but also measured quality, learned from outcomes, and suggested improvements?&lt;br&gt;
My practical angle: NextGenTools + Passmark evaluation&lt;br&gt;
I run NextGenTools, a growing platform of online utilities for PDF, image, text, developer, and productivity workflows. The idea is simple: fast, privacy-first tools that people can use without installing software.&lt;br&gt;
But after reflecting on Gemini Enterprise Agent Platform, I realized the next step is not just adding more tools. The next step is adding intelligence around the tools.&lt;br&gt;
That is where my Passmark-based evaluation idea fits.&lt;br&gt;
Instead of treating each tool as a one-time action, I want to evaluate every important workflow through measurable tests:&lt;br&gt;
•       speed&lt;br&gt;
•       output quality&lt;br&gt;
•       accuracy&lt;br&gt;
•       usability&lt;br&gt;
•       failure cases&lt;br&gt;
•       SEO visibility&lt;br&gt;
•       competitor comparison&lt;br&gt;
The goal is not only to say, "the tool works." The goal is to prove how well it works and what should improve next.&lt;br&gt;
The agentic evaluation loop&lt;br&gt;
User Action -&amp;gt; Tool Execution on NextGenTools -&amp;gt; Passmark Test Layer -&amp;gt; Performance and Accuracy Score -&amp;gt; AI Simulation / Gemini-style Reasoning -&amp;gt; Suggested Improvements -&amp;gt; Backlog or Auto-Optimization -&amp;gt; Better Tool Experience&lt;br&gt;
This is where the NEXT '26 announcement becomes practical for me.&lt;br&gt;
Gemini Enterprise Agent Platform is not only about a chatbot answering questions. The bigger idea is that agents can be connected to workflows, tools, governance, and observability. That is exactly what small developers should learn from enterprise AI: do not build isolated AI moments; build measurable AI systems.&lt;br&gt;
Example: a PDF compression tool&lt;br&gt;
A traditional PDF compressor does this:&lt;br&gt;
Upload PDF -&amp;gt; Compress -&amp;gt; Download&lt;br&gt;
An agentic version does more:&lt;br&gt;
Upload PDF -&amp;gt; Compress -&amp;gt; Measure compression ratio -&amp;gt; Check quality loss -&amp;gt; Compare speed -&amp;gt; Detect failure cases -&amp;gt; Suggest algorithm or UX improvements&lt;br&gt;
For example, if a PDF is reduced from 10 MB to 4 MB but the visual quality becomes poor, the system should not call that a win. It should score the output honestly. If the compression is slow compared to competitors, that should be visible. If a file type fails repeatedly, the system should create an improvement task.&lt;br&gt;
That is how a simple tool becomes a living system.&lt;br&gt;
What developers should learn from this announcement&lt;br&gt;
The most important lesson from Gemini Enterprise Agent Platform is not simply "use agents."&lt;br&gt;
Build software that can observe, evaluate, and improve the workflow it is part of.&lt;br&gt;
For developers, this means we should start adding these layers to our applications:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Evaluation layer&lt;br&gt;
Do not only run the feature. Measure its output. Track accuracy, speed, failures, user friction, and repeat problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reasoning layer&lt;br&gt;
Use AI to interpret those measurements. Let the system explain why performance dropped, why users abandoned a flow, or why one tool performs worse than a competitor.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Action layer&lt;br&gt;
Turn insights into backlog items, code tasks, prompt improvements, UI changes, documentation updates, or automated tests.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Governance layer&lt;br&gt;
This part matters. Agentic systems can become dangerous if they are allowed to act without boundaries. Every system needs logging, approval, role control, human review, and rollback.&lt;br&gt;
This is one reason the Google Cloud framing is important. Enterprise AI is not just about intelligence. It is about controlled intelligence.&lt;br&gt;
My critique: agentic AI still needs proof, not hype&lt;br&gt;
I am excited about Gemini Enterprise Agent Platform, but I also think developers should stay practical.&lt;br&gt;
The AI world has too many demos that look magical for five minutes but fail inside real workflows. The real test is not whether an agent can produce a nice answer. The real test is whether it can survive messy inputs, incomplete data, user mistakes, edge cases, permissions, cost limits, and production monitoring.&lt;br&gt;
That is why I like the direction of agent observability and governance. Agents should not be treated like black boxes. They need logs, scores, confidence checks, and human review.&lt;br&gt;
In my own NextGenTools idea, I do not want AI to blindly rewrite everything. I want AI to help evaluate, suggest, and prioritize - while the developer stays responsible for the final decision.&lt;br&gt;
Why this matters for small builders&lt;br&gt;
Some people may think Gemini Enterprise Agent Platform is only for large companies. I see it differently.&lt;br&gt;
Small builders can learn the pattern even before they use the full enterprise stack:&lt;br&gt;
•       connect tools to evaluation data&lt;br&gt;
•       create feedback loops&lt;br&gt;
•       compare outputs against competitors&lt;br&gt;
•       use AI to explain problems&lt;br&gt;
•       turn analysis into improvements&lt;br&gt;
That is a powerful mindset for indie developers, startup founders, and people building utility platforms like mine.&lt;br&gt;
The winners in the next phase will not simply be the people with the most tools. They will be the people with the best learning loop.&lt;br&gt;
Final thought&lt;br&gt;
Google Cloud NEXT '26 made one thing clear to me:&lt;br&gt;
AI is moving from a feature inside software to an operating layer around software.&lt;br&gt;
That shift changes how I want to build NextGenTools.&lt;br&gt;
I do not only want a website full of useful utilities. I want a system where every tool can be tested, scored, compared, improved, and eventually optimized through an agentic workflow.&lt;br&gt;
That is the real opportunity I see in Gemini Enterprise Agent Platform. Not just smarter chat. Smarter systems.&lt;br&gt;
References&lt;br&gt;
•       Google Cloud: Introducing Gemini Enterprise Agent Platform - &lt;a href="https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform" rel="noopener noreferrer"&gt;https://cloud.google.com/blog/products/ai-machine-learning/introducing-gemini-enterprise-agent-platform&lt;/a&gt;&lt;br&gt;
•       Google Cloud: Welcome to Google Cloud Next '26 - &lt;a href="https://cloud.google.com/blog/topics/google-cloud-next/welcome-to-google-cloud-next26" rel="noopener noreferrer"&gt;https://cloud.google.com/blog/topics/google-cloud-next/welcome-to-google-cloud-next26&lt;/a&gt;&lt;br&gt;
•       Google Cloud: Google Cloud Next 2026 wrap up - &lt;a href="https://cloud.google.com/blog/topics/google-cloud-next/google-cloud-next-2026-wrap-up" rel="noopener noreferrer"&gt;https://cloud.google.com/blog/topics/google-cloud-next/google-cloud-next-2026-wrap-up&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>cloudnextchallenge</category>
      <category>googlecloud</category>
    </item>
    <item>
      <title>The Actual Lead Generation System using OpenClaw</title>
      <dc:creator>ahmad rabbani</dc:creator>
      <pubDate>Sun, 26 Apr 2026 13:29:33 +0000</pubDate>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef/the-actual-lead-generation-system-usin-openclaw-3fck</link>
      <guid>https://dev.to/ahmad_rabbani_50bec5adbef/the-actual-lead-generation-system-usin-openclaw-3fck</guid>
      <description>&lt;p&gt;I built a lead generation system that can simulate and verify AI outreach without sending a single real email.&lt;/p&gt;

&lt;p&gt;While building an AI outreach workflow for &lt;a href="https://play2earnsports.com/" rel="noopener noreferrer"&gt;Play2Earn Sports&lt;/a&gt;, a Canada-based sports platform, I ran into a familiar problem: it is easy to demo an AI feature once, and much harder to prove it actually works inside a real backend flow.&lt;/p&gt;

&lt;p&gt;So instead of stopping at “the prompt looks good,” I added a dedicated Laravel seeder that creates synthetic global club leads and runs them through the same OpenClaw drafting path the production app uses.&lt;br&gt;
That turned the feature from a demo into something I could verify.&lt;br&gt;
🛠️ Build This Yourself&lt;br&gt;
To reproduce this workflow:&lt;/p&gt;

&lt;p&gt;Install OpenClaw and make sure the gateway is running locally.&lt;br&gt;
Add a small Node.js proxy that exposes /v1/chat/completions.&lt;br&gt;
In Laravel, send club lead data as a structured prompt.&lt;br&gt;
Ask OpenClaw to return JSON with subject and body.&lt;br&gt;
Save the draft back to the lead record.&lt;br&gt;
Store draft_provider in metadata so you can verify the source.&lt;br&gt;
Sample prompt&lt;br&gt;
System:&lt;br&gt;
Write a concise, professional cold outreach email for a sports club.&lt;br&gt;
Return valid JSON only with subject and body.&lt;/p&gt;

&lt;p&gt;User:&lt;br&gt;
Business: Play2Earn Sports&lt;br&gt;
Business location: Canada&lt;br&gt;
Club name: Toronto Falcons Football Academy&lt;br&gt;
Sport: football&lt;br&gt;
City: Toronto&lt;br&gt;
Country: Canada&lt;br&gt;
Booking link: &lt;a href="https://play2earn.example/outreach/book/demo-token-123" rel="noopener noreferrer"&gt;https://play2earn.example/outreach/book/demo-token-123&lt;/a&gt;&lt;br&gt;
Sample curl&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-X&lt;/span&gt; POST http://127.0.0.1:3000/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "openclaw-local",
    "messages": [
      {
        "role": "system",
        "content": "Write a concise, professional cold outreach email for a sports club. Return valid JSON only with subject and body."
      },
      {
        "role": "user",
        "content": "Business: Play2Earn Sports\nBusiness location: Canada\nClub name: Toronto Falcons Football Academy\nSport: football\nCity: Toronto\nCountry: Canada\nBooking link: https://play2earn.example/outreach/book/demo-token-123"
      }
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Expected response&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"choices"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"content"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;subject&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Partnership Opportunity...&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;body&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;:&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Hi Toronto Falcons Football Academy team...&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Sample Laravel save flow&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="nv"&gt;$rawContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nv"&gt;$response&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'choices'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;'message'&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="s1"&gt;'content'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nv"&gt;$draft&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;json_decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$rawContent&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nv"&gt;$lead&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
    &lt;span class="s1"&gt;'email_subject'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$draft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'subject'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'email_body'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$draft&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'body'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'status'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'draft_ready'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="s1"&gt;'metadata'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="s1"&gt;'draft_provider'&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s1"&gt;'openclaw'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That last part is important. Storing draft_provider made the OpenClaw integration verifiable, especially when running the seeded demo leads through the real draft pipeline.&lt;/p&gt;

&lt;p&gt;**The Workflow&lt;br&gt;
The outreach module helps admins:&lt;/p&gt;

&lt;p&gt;discover sports clubs&lt;br&gt;
store public business contact info&lt;br&gt;
generate personalized outreach drafts&lt;br&gt;
approve or reject leads&lt;br&gt;
log emails&lt;br&gt;
offer demo booking links&lt;br&gt;
automate follow-ups&lt;br&gt;
OpenClaw is used for one narrow but important part: generating the initial outreach draft.&lt;/p&gt;

&lt;p&gt;**The Architecture&lt;br&gt;
**The path looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fay0sinls47twq1chwywp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fay0sinls47twq1chwywp.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
Laravel talks to an OpenAI-style HTTP endpoint, and the proxy bridges that into the OpenClaw side.&lt;/p&gt;

&lt;p&gt;That kept the application code simple and gave me a clean provider boundary.&lt;/p&gt;

&lt;p&gt;Why the Seeder Matters&lt;br&gt;
The most useful part of this integration was not the prompt. It was the seeder.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;I created AiOutreachDemoSeeder to:&lt;/code&gt;&lt;br&gt;
seed global synthetic clubs from Canada, the UK, Australia, and South Africa&lt;br&gt;
create outreach settings and demo slots&lt;br&gt;
generate drafts through the real EmailCampaignService -&amp;gt; AiEmailService path&lt;br&gt;
create visible admin data for approved, emailed, and demo-booked leads&lt;br&gt;
That means I can test the full workflow without touching real contacts.&lt;/p&gt;

&lt;p&gt;The Important Detail: Verifiability&lt;br&gt;
Each generated draft stores its source in lead metadata using draft_provider.&lt;/p&gt;

&lt;p&gt;So after seeding, I can tell whether a lead was drafted by:&lt;/p&gt;

&lt;p&gt;openclaw&lt;br&gt;
openai&lt;br&gt;
template&lt;br&gt;
That one field made the integration much easier to trust.&lt;/p&gt;

&lt;p&gt;If OpenClaw fails and the app falls back, I do not have to guess. The record tells me.&lt;/p&gt;

&lt;p&gt;Why This Is Better Than Fake Sample Content&lt;br&gt;
A lot of teams seed nice-looking AI output directly into the database.&lt;/p&gt;

&lt;p&gt;I did not want that.&lt;/p&gt;

&lt;p&gt;I wanted the seed to exercise the real application path, because that proves more than formatting. It proves:&lt;/p&gt;

&lt;p&gt;config is wired&lt;br&gt;
prompt settings are loaded&lt;br&gt;
provider calls are working&lt;br&gt;
results are saved correctly&lt;br&gt;
admin screens reflect the real state&lt;br&gt;
That is a much more honest test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxy6ektra66u2niqubdr4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxy6ektra66u2niqubdr4.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I Learned&lt;br&gt;
A few things became clear very quickly.&lt;/p&gt;

&lt;p&gt;First, AI features need observability more than they need hype.&lt;/p&gt;

&lt;p&gt;Second, backend workflows are where a lot of AI work becomes real. The interesting part is not “can the model answer?” It is “can the system show what happened?”&lt;/p&gt;

&lt;p&gt;Third, OpenClaw felt most useful when treated as an infrastructure component, not just a chat interface.&lt;/p&gt;

&lt;p&gt;The Reproducible Flow&lt;br&gt;
The workflow is now simple:&lt;/p&gt;

&lt;p&gt;configure the OpenClaw endpoint&lt;br&gt;
run migrations&lt;br&gt;
seed the outreach demo data&lt;br&gt;
open the admin outreach dashboard&lt;br&gt;
inspect lead status, email logs, and draft_provider&lt;br&gt;
That makes verification repeatable for anyone on the team.&lt;/p&gt;

&lt;p&gt;Closing Thought&lt;br&gt;
The best part of this build was not the generated email. It was making the AI layer testable inside the product.&lt;/p&gt;

&lt;p&gt;That changed my view of AI integration a bit: a useful AI feature is not just one that produces output. It is one that another developer can verify without guesswork.&lt;/p&gt;

&lt;p&gt;For this project, the seeder ended up being just as important as the model call.&lt;/p&gt;

&lt;p&gt;ClawCon Michigan&lt;br&gt;
I like that this challenge pushes people to share practical OpenClaw workflows, not just screenshots of prompts. That is where the real engineering lessons are.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>openclawchallenge</category>
    </item>
    <item>
      <title>How JavaScript Evolved — And Why Modern Browsers Don’t Need Your Backend Anymore</title>
      <dc:creator>ahmad rabbani</dc:creator>
      <pubDate>Sun, 19 Apr 2026 14:56:54 +0000</pubDate>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef/how-javascript-evolved-and-why-modern-browsers-dont-need-your-backend-anymore-2d53</link>
      <guid>https://dev.to/ahmad_rabbani_50bec5adbef/how-javascript-evolved-and-why-modern-browsers-dont-need-your-backend-anymore-2d53</guid>
      <description>&lt;p&gt;JavaScript has come a long way.&lt;/p&gt;

&lt;p&gt;From simple button clicks in the 90s… to running full applications, AI models, and even file processing — right inside your browser.&lt;/p&gt;

&lt;p&gt;Today, we’re entering a new era where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You don’t always need a backend&lt;/li&gt;
&lt;li&gt;Your data doesn’t leave your device&lt;/li&gt;
&lt;li&gt;Privacy is built-in, not added later
Let’s break it down.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🕰️ The Early Days: JavaScript Was Just “Sprinkles”&lt;/p&gt;

&lt;p&gt;Back in the days of Netscape Navigator (1995), JavaScript was introduced as a lightweight scripting language.&lt;/p&gt;

&lt;p&gt;Its job?&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Validate forms&lt;/li&gt;
&lt;li&gt;Show alerts&lt;/li&gt;
&lt;li&gt;Add small interactivity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Everything important still happened on the server.&lt;/p&gt;

&lt;p&gt;The AJAX Revolution&lt;/p&gt;

&lt;p&gt;Then came AJAX.&lt;/p&gt;

&lt;p&gt;This changed everything.&lt;/p&gt;

&lt;p&gt;Instead of reloading pages:&lt;/p&gt;

&lt;p&gt;Data could be fetched dynamically&lt;br&gt;
Interfaces became smoother&lt;br&gt;
Web apps started feeling like desktop apps&lt;/p&gt;

&lt;p&gt;This was the first step toward frontend power.&lt;/p&gt;

&lt;p&gt;⚡ The Rise of Modern JavaScript Engines&lt;/p&gt;

&lt;p&gt;Enter Google Chrome and its V8 engine.&lt;/p&gt;

&lt;p&gt;Suddenly:&lt;/p&gt;

&lt;p&gt;JavaScript became insanely fast&lt;br&gt;
Complex logic could run in-browser&lt;br&gt;
Frameworks like React, Angular, and Vue.js took over&lt;/p&gt;

&lt;p&gt;Frontend wasn’t “just UI” anymore — it became the application layer.&lt;/p&gt;

&lt;p&gt;Today: The Browser Is a Full Runtime&lt;/p&gt;

&lt;p&gt;Modern browsers now support:&lt;/p&gt;

&lt;p&gt;WebAssembly (WASM) → Run near-native performance code&lt;br&gt;
Web Workers → Multi-threading in browser&lt;br&gt;
File APIs → Direct file manipulation&lt;br&gt;
Canvas &amp;amp; WebGL → Image and video processing&lt;br&gt;
AI models in browser → No server required&lt;/p&gt;

&lt;p&gt;This means…&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can process files, images, and data locally&lt;/li&gt;
&lt;li&gt;No upload required&lt;/li&gt;
&lt;li&gt;No backend needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🔐 Why This Is a Big Deal (Privacy + Security)&lt;/p&gt;

&lt;p&gt;Traditional apps:&lt;/p&gt;

&lt;p&gt;Upload your files to servers&lt;br&gt;
Process data remotely&lt;br&gt;
Store/log user information&lt;/p&gt;

&lt;p&gt;Modern browser-based apps:&lt;/p&gt;

&lt;p&gt;Process everything on your device&lt;br&gt;
No data leaves your system&lt;br&gt;
No risk of server leaks&lt;/p&gt;

&lt;p&gt;This is privacy-first computing.&lt;/p&gt;

&lt;p&gt;🌍 Real Example: NextGenTools&lt;/p&gt;

&lt;p&gt;One of the best examples of this shift is NextGenTools.&lt;/p&gt;

&lt;p&gt;👉 A browser-based toolkit where everything runs locally.&lt;/p&gt;

&lt;p&gt;What it can do:&lt;br&gt;
📄 &lt;a href="https://nextgentools.live/tools/pdf-to-word" rel="noopener noreferrer"&gt;Convert PDF to Word&lt;/a&gt;&lt;br&gt;
🗜️ &lt;a href="https://nextgentools.live/tools/compress-pdf" rel="noopener noreferrer"&gt;Compress PDF files&lt;/a&gt;&lt;br&gt;
🖼️ &lt;a href="https://nextgentools.live/tools/background-remover" rel="noopener noreferrer"&gt;Remove image backgrounds&lt;/a&gt;&lt;br&gt;
🔄 Merge, split, and edit PDFs&lt;/p&gt;

&lt;p&gt;And the best part?&lt;/p&gt;

&lt;p&gt;👉 No login required&lt;br&gt;
👉 No file upload to server&lt;br&gt;
👉 Everything runs inside your browser&lt;/p&gt;

&lt;p&gt;This is exactly what modern JavaScript enables.&lt;/p&gt;

&lt;p&gt;🧪 What’s Happening Under the Hood?&lt;/p&gt;

&lt;p&gt;Tools like these use:&lt;/p&gt;

&lt;p&gt;WebAssembly for performance-heavy tasks&lt;br&gt;
JavaScript File APIs for file handling&lt;br&gt;
Canvas for image manipulation&lt;br&gt;
In-browser processing libraries&lt;/p&gt;

&lt;p&gt;This replaces what used to require:&lt;/p&gt;

&lt;p&gt;PHP / Node backend&lt;br&gt;
Cloud storage&lt;br&gt;
Processing queues&lt;br&gt;
🚀 The Future: Backend Optional?&lt;/p&gt;

&lt;p&gt;We’re not saying backend is dead.&lt;/p&gt;

&lt;p&gt;But we are saying:&lt;/p&gt;

&lt;p&gt;👉 It’s no longer required for many use cases.&lt;/p&gt;

&lt;p&gt;Use browser-only apps when:&lt;/p&gt;

&lt;p&gt;Privacy matters&lt;br&gt;
Speed matters&lt;br&gt;
Simplicity matters&lt;/p&gt;

&lt;p&gt;Use backend when:&lt;/p&gt;

&lt;p&gt;You need persistence&lt;br&gt;
Multi-user systems&lt;br&gt;
Heavy data processing at scale&lt;br&gt;
💡 Final Thought&lt;/p&gt;

&lt;p&gt;JavaScript didn’t just evolve…&lt;/p&gt;

&lt;p&gt;It redefined what’s possible on the web.&lt;/p&gt;

&lt;p&gt;We’ve gone from:&lt;/p&gt;

&lt;p&gt;“Click a button → send to server”&lt;/p&gt;

&lt;p&gt;To:&lt;/p&gt;

&lt;p&gt;“Process everything instantly — right where you are”&lt;/p&gt;

&lt;p&gt;And this is just the beginning.&lt;/p&gt;

&lt;p&gt;Have you used browser-based tools like this?&lt;/p&gt;

&lt;p&gt;Do you think backend-free apps are the future?&lt;/p&gt;

&lt;p&gt;👇 Let’s discuss in the comments.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>🌍 GreenLens — AI That Tells You Exactly Where to Plant Trees</title>
      <dc:creator>ahmad rabbani</dc:creator>
      <pubDate>Sun, 19 Apr 2026 06:06:41 +0000</pubDate>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef/earth-day-edition-greenlens-pfl</link>
      <guid>https://dev.to/ahmad_rabbani_50bec5adbef/earth-day-edition-greenlens-pfl</guid>
      <description>&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;I built GreenLens, an AI-powered platform that turns any location into actionable environmental intelligence.&lt;/p&gt;

&lt;p&gt;Most tools show:&lt;/p&gt;

&lt;p&gt;AQI&lt;br&gt;
climate data&lt;br&gt;
reports&lt;/p&gt;

&lt;p&gt;👉 But they don’t answer:&lt;/p&gt;

&lt;p&gt;“Where exactly should we plant trees?”&lt;/p&gt;

&lt;p&gt;🌳 The Breakthrough&lt;/p&gt;

&lt;p&gt;GreenLens doesn’t just analyze — it decides.&lt;/p&gt;

&lt;p&gt;It tells you:&lt;/p&gt;

&lt;p&gt;📍 where to plant trees&lt;br&gt;
🌱 how many trees are needed&lt;br&gt;
🌳 where dense forests are possible&lt;br&gt;
🧠 what strategy to follow&lt;br&gt;
🌿 Miyawaki Forest Detection (Core Feature)&lt;/p&gt;

&lt;p&gt;Using the Miyawaki method, the system identifies:&lt;/p&gt;

&lt;p&gt;high-impact plantation zones&lt;br&gt;
small-area dense forests&lt;br&gt;
fast-growing urban greening opportunities&lt;/p&gt;

&lt;p&gt;⚡ How It Works&lt;br&gt;
User selects location&lt;br&gt;
        ↓&lt;br&gt;
Fetch environmental data&lt;br&gt;
        ↓&lt;br&gt;
Calculate tree opportunity&lt;br&gt;
        ↓&lt;br&gt;
AI generates recommendations&lt;br&gt;
        ↓&lt;br&gt;
Dashboard displays results&lt;br&gt;
🧠 AI Layer (What Makes It Special)&lt;/p&gt;

&lt;p&gt;Instead of a chatbot, Google Gemini acts as a decision engine:&lt;/p&gt;

&lt;p&gt;interprets environmental signals&lt;br&gt;
generates human-readable insights&lt;br&gt;
suggests real-world actions&lt;br&gt;
💡 Core Idea&lt;/p&gt;

&lt;p&gt;Data provides facts. AI provides direction.&lt;/p&gt;

&lt;p&gt;🚀 From Analysis → Real Impact&lt;/p&gt;

&lt;p&gt;This is not just a tool — it’s a platform vision.&lt;/p&gt;

&lt;p&gt;🌍 Community Tree Tracking&lt;br&gt;
tag planted trees&lt;br&gt;
upload images&lt;br&gt;
track growth&lt;br&gt;
build local communities&lt;/p&gt;

&lt;p&gt;👉 “This area needs 500 trees → fund → plant → track”&lt;/p&gt;

&lt;p&gt;🏗️ How I Built It&lt;br&gt;
Tech Stack&lt;br&gt;
Laravel + Blade&lt;br&gt;
Bootstrap&lt;br&gt;
Google Maps API&lt;br&gt;
Google Air Quality API&lt;br&gt;
Google Gemini&lt;br&gt;
SQLite&lt;br&gt;
Nginx&lt;br&gt;
⚡ Real Engineering Challenge&lt;/p&gt;

&lt;p&gt;The app runs under:&lt;/p&gt;

&lt;p&gt;/earth-health/&lt;/p&gt;

&lt;p&gt;This required:&lt;/p&gt;

&lt;p&gt;fixing Laravel routing&lt;br&gt;
handling base paths&lt;br&gt;
configuring nginx&lt;br&gt;
🌍 Why This Matters&lt;/p&gt;

&lt;p&gt;Environmental tools usually fail because they:&lt;/p&gt;

&lt;p&gt;show data&lt;br&gt;
but don’t guide action&lt;/p&gt;

&lt;p&gt;GreenLens bridges:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s71ovraygd4rug8p8te.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7s71ovraygd4rug8p8te.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;br&gt;
👉 data → decisions → action&lt;/p&gt;

&lt;p&gt;Demo Links&lt;br&gt;
🌐 Live App: &lt;a href="http://104.207.64.25/earth-health/" rel="noopener noreferrer"&gt;http://104.207.64.25/earth-health/&lt;/a&gt;&lt;br&gt;
🧪 Assessment: &lt;a href="http://104.207.64.25/earth-health/assess" rel="noopener noreferrer"&gt;http://104.207.64.25/earth-health/assess&lt;/a&gt;&lt;br&gt;
💻 Code: &lt;a href="https://github.com/ahmadrabbani/earth-health" rel="noopener noreferrer"&gt;https://github.com/ahmadrabbani/earth-health&lt;/a&gt;&lt;br&gt;
💰 Call for Collaboration&lt;/p&gt;

&lt;p&gt;I’m looking to take this further:&lt;/p&gt;

&lt;p&gt;🌍 environmental partners&lt;br&gt;
💻 developers&lt;br&gt;
💰 early supporters&lt;br&gt;
Prize Categories&lt;br&gt;
🥇 Best Use of Google Gemini&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8os28mpszlu20l1hg9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs8os28mpszlu20l1hg9h.png" alt=" " width="800" height="1200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gemini is deeply integrated as:&lt;/p&gt;

&lt;p&gt;interpretation layer&lt;br&gt;
recommendation engine&lt;br&gt;
decision support&lt;br&gt;
Final Thoughts&lt;/p&gt;

&lt;p&gt;AI shouldn’t just inform.&lt;br&gt;
It should help us act.&lt;/p&gt;

&lt;p&gt;Prize Categories&lt;br&gt;
🥇 Best Use of Google Gemini&lt;/p&gt;

&lt;p&gt;Gemini is deeply integrated as:&lt;/p&gt;

&lt;p&gt;interpretation layer&lt;br&gt;
recommendation engine&lt;br&gt;
decision support&lt;/p&gt;

&lt;p&gt;💬 Feedback welcome&lt;br&gt;
⭐ Star the repo if you like it&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Free Developer Tools Hub — No Login, No Tracking, Just Speed</title>
      <dc:creator>ahmad rabbani</dc:creator>
      <pubDate>Sun, 12 Apr 2026 19:54:48 +0000</pubDate>
      <link>https://dev.to/ahmad_rabbani_50bec5adbef/i-built-a-free-developer-tools-hub-no-login-no-tracking-just-speed-4dg2</link>
      <guid>https://dev.to/ahmad_rabbani_50bec5adbef/i-built-a-free-developer-tools-hub-no-login-no-tracking-just-speed-4dg2</guid>
      <description>&lt;p&gt;As developers, we constantly jump between tools like:&lt;/p&gt;

&lt;p&gt;JSON formatters&lt;br&gt;
Base64 encoders&lt;br&gt;
Regex testers&lt;br&gt;
API testers&lt;/p&gt;

&lt;p&gt;And honestly… most of them are either:&lt;/p&gt;

&lt;p&gt;cluttered with ads&lt;br&gt;
painfully slow&lt;br&gt;
or require login for no reason 🤦‍♂️&lt;/p&gt;

&lt;p&gt;So I decided to build something simpler.&lt;/p&gt;

&lt;p&gt;🧰 Introducing NextGenTools (Developer Tools Section)&lt;/p&gt;

&lt;p&gt;A clean, fast, and privacy-first developer toolkit.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://nextgentools.live" rel="noopener noreferrer"&gt;https://nextgentools.live&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💡 What Makes It Different?&lt;br&gt;
⚡ Instant Usage (No Login)&lt;/p&gt;

&lt;p&gt;No accounts. No friction.&lt;br&gt;
Open → Use → Done.&lt;/p&gt;

&lt;p&gt;🔒 Privacy First&lt;br&gt;
No data storage&lt;br&gt;
No tracking scripts messing with your workflow&lt;br&gt;
Everything runs cleanly without unnecessary overhead&lt;br&gt;
🧪 Tools You Actually Use Daily&lt;/p&gt;

&lt;p&gt;From the current version 👇&lt;/p&gt;

&lt;p&gt;API Tester&lt;br&gt;
JSON Formatter&lt;br&gt;
Base64 Encoder / Decoder&lt;br&gt;
UUID Generator&lt;br&gt;
URL Encoder / Decoder&lt;br&gt;
Color Picker&lt;br&gt;
Regex Tester&lt;/p&gt;

&lt;p&gt;All in one place.&lt;/p&gt;

&lt;p&gt;🎯 Built for Real Dev Workflow&lt;/p&gt;

&lt;p&gt;The idea was simple:&lt;/p&gt;

&lt;p&gt;Reduce tab switching and remove friction.&lt;/p&gt;

&lt;p&gt;Instead of:&lt;/p&gt;

&lt;p&gt;Opening 5 different sites&lt;br&gt;
Waiting for them to load&lt;br&gt;
Closing popups&lt;/p&gt;

&lt;p&gt;You just use one clean interface.&lt;/p&gt;

&lt;p&gt;🖼️ UI Preview&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9rh4q17m5rtr68r69x3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu9rh4q17m5rtr68r69x3.png" alt=" " width="800" height="517"&gt;&lt;/a&gt;&lt;br&gt;
The goal was minimal + functional:&lt;/p&gt;

&lt;p&gt;Fast search bar&lt;br&gt;
Quick access cards&lt;br&gt;
No distractions&lt;br&gt;
🔥 What’s Coming Next&lt;br&gt;
Request-based tool additions&lt;br&gt;
More advanced API utilities&lt;br&gt;
Dev-focused automation tools&lt;br&gt;
💬 Looking for Feedback&lt;/p&gt;

&lt;p&gt;I’d really appreciate honest feedback from devs here:&lt;/p&gt;

&lt;p&gt;What tool do you use daily that I should add?&lt;br&gt;
Any UX improvements you’d suggest?&lt;br&gt;
Performance issues on your device?&lt;br&gt;
🙌 Try It Out&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://nextgentools.live" rel="noopener noreferrer"&gt;https://nextgentools.live&lt;/a&gt;&lt;/p&gt;

</description>
      <category>privacy</category>
      <category>productivity</category>
      <category>showdev</category>
      <category>tooling</category>
    </item>
  </channel>
</rss>
