<?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: Shoaib Junaid Khan</title>
    <description>The latest articles on DEV Community by Shoaib Junaid Khan (@techytravell7).</description>
    <link>https://dev.to/techytravell7</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%2F4171951%2F00fa803a-5446-4684-bf65-95e1a21fc884.jpg</url>
      <title>DEV Community: Shoaib Junaid Khan</title>
      <link>https://dev.to/techytravell7</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/techytravell7"/>
    <language>en</language>
    <item>
      <title>PulseTrust_</title>
      <dc:creator>Shoaib Junaid Khan</dc:creator>
      <pubDate>Sat, 31 Oct 2026 18:36:26 +0000</pubDate>
      <link>https://dev.to/techytravell7/pulsetrust-5h4k</link>
      <guid>https://dev.to/techytravell7/pulsetrust-5h4k</guid>
      <description>&lt;p&gt;Listening for the Ghosts Inside Industrial Machines&lt;/p&gt;

&lt;p&gt;This is a submission for the "Hacktoberfest Open-Source AI Challenge Week 4: Ghost in the Machine" (&lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;https://dev.to/challenges/hacktoberfest-week4-2026-10-26&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;What I Built&lt;/p&gt;

&lt;p&gt;Machines don't always fail with a loud bang. Sometimes, the first sign of a problem is hidden in a stream of sensor readings — a small deviation, an unusual pattern, or something that looks completely normal at first.&lt;/p&gt;

&lt;p&gt;That's the idea behind PulseTrust_, an industrial sensor-trust and DC motor monitoring prototype.&lt;/p&gt;

&lt;p&gt;The project uses an ESP32 to collect sensor telemetry from a DC motor and an anomaly-detection model to identify readings that deviate from expected behaviour.&lt;/p&gt;

&lt;p&gt;I interpreted Ghost in the Machine as something other than a supernatural presence. The ghost is the invisible fault hiding inside a machine — something that may go unnoticed until it becomes a serious problem.&lt;/p&gt;

&lt;p&gt;PulseTrust_ is an attempt to make those hidden signals visible.&lt;/p&gt;

&lt;p&gt;The objective is simple: monitor the machine, understand its behaviour, and flag unusual patterns before they go unnoticed.&lt;/p&gt;

&lt;p&gt;Demo&lt;/p&gt;

&lt;p&gt;[Insert your deployed demo link here]&lt;/p&gt;

&lt;p&gt;[Insert a video demonstration here]&lt;/p&gt;

&lt;p&gt;A short demonstration showing the ESP32 telemetry flow and anomaly detection would be especially useful here.&lt;/p&gt;

&lt;p&gt;Code&lt;/p&gt;

&lt;p&gt;[Insert your GitHub repository link here]&lt;/p&gt;

&lt;p&gt;The repository contains the implementation and project setup.&lt;/p&gt;

&lt;p&gt;How I Built It&lt;/p&gt;

&lt;p&gt;PulseTrust_ brings together embedded hardware, backend development, and machine learning.&lt;/p&gt;

&lt;p&gt;The main components are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ESP32: Collects telemetry from the DC motor and acts as the hardware interface.&lt;/li&gt;
&lt;li&gt;FastAPI: Handles backend communication and the application logic.&lt;/li&gt;
&lt;li&gt;Isolation Forest: An anomaly-detection algorithm used to identify unusual patterns in sensor telemetry.&lt;/li&gt;
&lt;li&gt;Supabase: Provides the backend data layer for storing and managing telemetry.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The overall flow is:&lt;/p&gt;

&lt;p&gt;"DC Motor → ESP32 → FastAPI → Anomaly Detection → Supabase"&lt;/p&gt;

&lt;p&gt;The machine-learning component is an Isolation Forest model. Rather than depending entirely on labelled examples of every possible motor failure, it can identify observations that differ from the patterns it has learned.&lt;/p&gt;

&lt;p&gt;This is important because industrial environments can produce many different abnormal behaviours, and collecting labelled examples of every failure scenario is not always practical.&lt;/p&gt;

&lt;p&gt;PulseTrust_ is a prototype, not a certified industrial safety or predictive-maintenance system. Its current purpose is to demonstrate how sensor telemetry and anomaly detection can work together to identify unusual machine behaviour.&lt;/p&gt;

&lt;p&gt;Why Does Open Innovation Matter?&lt;/p&gt;

&lt;p&gt;For a project like PulseTrust_, I didn't want the intelligence behind the system to be a black box.&lt;/p&gt;

&lt;p&gt;Using an open-source machine-learning approach gives developers more control over how the model works, how it is configured, and how it can be improved.&lt;/p&gt;

&lt;p&gt;It also makes experimentation easier. The anomaly-detection approach can be inspected, tested against different sensor data, and replaced with another model as the project evolves.&lt;/p&gt;

&lt;p&gt;The combination of open technologies also makes the system more accessible to developers who want to experiment with industrial monitoring without depending entirely on expensive, proprietary AI services.&lt;/p&gt;

&lt;p&gt;Open innovation matters because it gives us the freedom to understand the technology we build with — not just consume it.&lt;/p&gt;

&lt;p&gt;The Spirit of It&lt;/p&gt;

&lt;p&gt;There is something interesting about a machine that can show signs of trouble without making a sound.&lt;/p&gt;

&lt;p&gt;A motor might still be running. Everything might appear normal from the outside. But somewhere inside its telemetry, a pattern could be changing.&lt;/p&gt;

&lt;p&gt;That is the ghost PulseTrust_ is trying to find.&lt;/p&gt;

&lt;p&gt;Not every ghost needs to haunt a house. Some hide inside machines, waiting for someone to notice.&lt;/p&gt;

&lt;p&gt;PulseTrust_ is built to listen.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Wildlens</title>
      <dc:creator>Shoaib Junaid Khan</dc:creator>
      <pubDate>Sun, 11 Oct 2026 17:13:05 +0000</pubDate>
      <link>https://dev.to/techytravell7/wildlens-4hb5</link>
      <guid>https://dev.to/techytravell7/wildlens-4hb5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;WildLens — Your AI-Powered Nature Field Guide&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So WildLens is basically a nature identification app, but the whole idea was to get people outside insted of just staring at there phone all day. You take a photo (or upload one) of a bird, bug, plant, mushroom, whatever you find, and the AI tells you what it thinks it is and why. It dosen't stop at the name tho, it tries to make you actually look closer at the thing.&lt;/p&gt;

&lt;p&gt;What's inside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nature identification:&lt;/strong&gt; upload a photo and get a result, plus the visual clues behind it&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lookalike Detective:&lt;/strong&gt; when the AI isnt sure, it shows upto three possible candidates&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Observe Next:&lt;/strong&gt; gives you ideas on what to look for next, like how it looks or behaves&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask WildLens:&lt;/strong&gt; you can ask follow up questions about whatever you identified&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice field guide:&lt;/strong&gt; talk to it using ElevenLabs, it feels more like chatting with a friend&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camera support:&lt;/strong&gt; take the picture right in the browser and send it for analysis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Basically i wanted AI to be a buddy for going outside and being curious, not one more reason to stay glued to the screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Live prototype:&lt;/strong&gt; &lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://wildlens-frontend.onrender.com/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;wildlens-frontend.onrender.com&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;The backend is deployed seperately on Render and its what gives the frontend its API.&lt;/p&gt;

&lt;p&gt;It works with photo identification and the conversational learning stuff. Heads up tho, the backend is on Render's free tier so the first request after a while might be slow, its just waking up.&lt;/p&gt;

&lt;h2&gt;
  
  
  Video Prototype
&lt;/h2&gt;

&lt;p&gt;If you dont feel like waiting for the backend to wake up, here's a quick video of WildLens in action. It shows the photo identification, the lookalike stuff and the voice guide working together.&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/GBoFgwHG6Fo" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Code
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GitHub repository:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/TechyCoderzx" rel="noopener noreferrer"&gt;
        TechyCoderzx
      &lt;/a&gt; / &lt;a href="https://github.com/TechyCoderzx/wildlens" rel="noopener noreferrer"&gt;
        wildlens
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;p&gt;WildLens 🌿
Discover the wild. Understand what you see. Then look closer
WildLens is an AI-assisted nature field guide built to help people explore the living world around them. Upload or capture a photograph of an organism and WildLens returns a structured identification hypothesis, visible clues, possible lookalikes, and ideas for what to observe next. You can also ask follow-up questions or talk to the WildLens field guide using voice
The idea is simple: use AI to make a moment outdoors more interesting, not to keep someone staring at a screen for longer than necessary
Important: WildLens is an educational exploration tool. Its results are model-generated hypotheses, not verified scientific identifications. Do not use it to decide whether a plant, mushroom, animal, or other organism is safe to touch, eat, or handle.&lt;/p&gt;

&lt;p&gt;Live project&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://wildlens-frontend.onrender.com" rel="nofollow noopener noreferrer"&gt;https://wildlens-frontend.onrender.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Backend health: &lt;a href="https://wildlens-k0ey.onrender.com/health" rel="nofollow noopener noreferrer"&gt;https://wildlens-k0ey.onrender.com/health&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Interactive API documentation: &lt;a href="https://wildlens-k0ey.onrender.com/docs" rel="nofollow noopener noreferrer"&gt;https://wildlens-k0ey.onrender.com/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source code: &lt;a href="https://github.com/TechyCoderzX/wildlens" rel="noopener noreferrer"&gt;https://github.com/TechyCoderzX/wildlens&lt;/a&gt;
The frontend and backend…&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/TechyCoderzx/wildlens" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
 

&lt;p&gt;The repo has the frontend, backend, API integrations and the project config.&lt;/p&gt;
&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;WildLens uses a React + Vite frontend and a FastAPI backend. The backend connects the UI to the AI model and the voice services through different API endpoints.&lt;/p&gt;
&lt;h3&gt;
  
  
  Gemma 4 API — The Core Identification Engine
&lt;/h3&gt;

&lt;p&gt;The main AI part uses Google's Gemma 4 through the Gemini API, the model id I configured is &lt;code&gt;gemma-4-26b-a4b-it&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;When someone submits a photo, the frontend sends it to the FastAPI backend. The backend processes the image and sends it to the model as a multimodal request, with instructions to identify the organism and explain the evidence for its answer.&lt;/p&gt;

&lt;p&gt;Gemma 4 gives back structured results, things like candidate organisms, explanations, and info that helps you explore further. I also tried to build in uncertainty and lookalike reasoning, because treating every prediction like its 100% right is just wrong.&lt;/p&gt;

&lt;p&gt;The backend validates what the model returns before it goes to the frontend. This matter because structured output from AI can sometimes come back incomplete or kinda messed up.&lt;/p&gt;

&lt;p&gt;Using the API meant I could use a really capable multimodal model without hosting it on my own laptop, and nobody has to download model weights to try the app.&lt;/p&gt;
&lt;h3&gt;
  
  
  ElevenLabs — Voice-Based Learning
&lt;/h3&gt;

&lt;p&gt;ElevenLabs is what powers the voice side of WildLens, to make the field guide more conversational and easier to access.&lt;/p&gt;

&lt;p&gt;The integration has:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Conversational voice interaction:&lt;/strong&gt; connects the user to the WildLens Field Guide agent&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text-to-speech summaries:&lt;/strong&gt; reads the identification summary out loud&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Voice agent configuration:&lt;/strong&gt; I setup an ElevenLabs agent to give short, friendly nature explanations, and to be careful about uncertainty and safety&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The voice conversation uses a token flow that goes through the backend, meant for client-side WebRTC. The sensitive API keys stay on the backend and never get exposed in the browser.&lt;/p&gt;

&lt;h3&gt;
  
  
  Application Architecture
&lt;/h3&gt;

&lt;p&gt;The main flow goes like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User captures or uploads a photo in the React frontend.&lt;/li&gt;
&lt;li&gt;Frontend sends the image to the FastAPI backend.&lt;/li&gt;
&lt;li&gt;Backend calls the Gemma 4 API and validates the identification that comes back.&lt;/li&gt;
&lt;li&gt;Result shows up with explanations and possible lookalikes.&lt;/li&gt;
&lt;li&gt;User keeps learning with follow up questions, observation tasks and voice.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Technology stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Frontend: React, Vite, JavaScript, HTML and CSS&lt;/li&gt;
&lt;li&gt;Backend: Python, FastAPI and Pydantic&lt;/li&gt;
&lt;li&gt;AI: Gemma 4 through the Gemini API&lt;/li&gt;
&lt;li&gt;Voice: ElevenLabs conversational AI and text-to-speech&lt;/li&gt;
&lt;li&gt;Deployment: Render for both frontend and backend&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the harder parts was balancing detailed explanations with the response limits. Sometimes the model write more then the token budget I set, so getting reliable structured output and keeping answers short is definetely something I still need to improve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Does Open Innovation Matter?
&lt;/h2&gt;

&lt;p&gt;Open innovation makes it way easier for developers to try stuff with AI, mix different tools together, and turn an idea into a real working app without building every single piece from scratch.&lt;/p&gt;

&lt;p&gt;WildLens puts multimodal AI, a normal web app and voice interaction together in one project. Because the model APIs and dev tools are so accessible, I could focus on the user experience, how the identification works, and whether people actually learn something from it.&lt;/p&gt;

&lt;p&gt;It also shows something important I think, identifying an organism is only the begining. AI can help people become more observent by explaining what they can see, comparing similar species, and suggesting what to look into next.&lt;/p&gt;

&lt;p&gt;I want WildLens to get people to step outside, notice the biodiversity around them, and use tech to feel more connected to nature.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Agent Session
&lt;/h2&gt;

&lt;p&gt;I used some dev tools and AI-assisted coding while building this, but I haven't included a DevRelay session link here. If I publish a saved session later i'll add the official embed or link in this section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Render — Deploying WildLens to the Web
&lt;/h2&gt;

&lt;p&gt;I used Render to deploy WildLens so people can open it with a public URL instead of having to run everything locally.&lt;/p&gt;

&lt;p&gt;There are two seperate Render services:&lt;/p&gt;

&lt;p&gt;Frontend — Render Static Site: hosts the React + Vite app, so the WildLens interface is available as a public website.&lt;/p&gt;

&lt;p&gt;Backend — Render Web Service: hosts the FastAPI backend, which handles the image-analysis requests, talks to the Gemma 4 API, validates the model responses, and provides the voice endpoints for ElevenLabs.&lt;/p&gt;

&lt;p&gt;The frontend talks to the backend using its public API URL, and the backend's CORS config allows requests from the deployed frontend origin.&lt;/p&gt;

&lt;p&gt;Keeping them as two services helped me get the app online while keeping the API credentials on the backend and not in the frontend. Render also made it easy to deploy updates straight from GitHub whenever the project changed.&lt;/p&gt;

&lt;p&gt;I used the free tier for the prototype, which was great since I didn't need to pay for hosting. The trade-off is free backend instances spin down after being inactive, so the first request can take a while to come back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prize Categories
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Best Use of Gemma 4&lt;/li&gt;
&lt;li&gt;Best Use of Render&lt;/li&gt;
&lt;li&gt;Best Use of ElevenLabs&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
  </channel>
</rss>
