<?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: Jojo</title>
    <description>The latest articles on DEV Community by Jojo (@jyotshana_0905).</description>
    <link>https://dev.to/jyotshana_0905</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%2F4180093%2F7dbd1d56-2826-446c-916a-9f979351f91a.png</url>
      <title>DEV Community: Jojo</title>
      <link>https://dev.to/jyotshana_0905</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jyotshana_0905"/>
    <language>en</language>
    <item>
      <title>Two Ways an AI Writes: One Step at a Time, or Draft and Revise?</title>
      <dc:creator>Jojo</dc:creator>
      <pubDate>Thu, 12 Nov 2026 15:52:25 +0000</pubDate>
      <link>https://dev.to/jyotshana_0905/two-ways-an-ai-writes-one-step-at-a-time-or-draft-and-revise-1o45</link>
      <guid>https://dev.to/jyotshana_0905/two-ways-an-ai-writes-one-step-at-a-time-or-draft-and-revise-1o45</guid>
      <description>&lt;p&gt;Imagine two writers tackling the same sentence.&lt;/p&gt;

&lt;p&gt;The first writes one word at a time, checking each new word against everything already written. The second sketches several blanks, fills in what it can, then revises the sentence until it makes sense.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The steady storyteller: autoregressive models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Most familiar chatbots generate text autoregressively. They predict the next token, add it to the text, and predict the next one. Each choice depends on the growing conversation.&lt;/p&gt;

&lt;p&gt;This step-by-step approach works well when order matters: answering a question, writing a long explanation, or completing code from a cursor. It also makes streaming feel natural the model can start showing you its answer while it continues writing.&lt;/p&gt;

&lt;p&gt;The trade-off? Those generation steps happen in sequence. The model has to produce one token before it can move on to the next.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The collaborative editor: diffusion models&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A diffusion language model starts with a partly blank or noisy sequence. It predicts several missing tokens, then refines the result over multiple passes. Think of it as filling in a draft with context from both sides.&lt;/p&gt;

&lt;p&gt;That makes diffusion appealing for tasks such as filling a gap in a document or editing several known regions. It can also predict multiple positions at once, creating the possibility of faster generation.&lt;/p&gt;

&lt;p&gt;But parallel guesses can clash. If a model fills several parts of a list simultaneously, each item might look reasonable on its own while the overall list breaks the requested pattern.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Autoregressive&lt;/th&gt;
&lt;th&gt;Diffusion&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;How it writes&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;One token after another&lt;/td&gt;
&lt;td&gt;Fills and revises multiple positions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Good fit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Chat, streaming, code continuation&lt;/td&gt;
&lt;td&gt;Infilling, editing, structured drafts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Watch out for&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Sequential generation can take time&lt;/td&gt;
&lt;td&gt;Parallel guesses may need extra refinement&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What researchers are learning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recent papers show that diffusion’s potential speed advantage depends on the task. ParallelBench, an ICLR 2026 study, found that parallel decoding can lose quality when tokens depend strongly on one another. A useful reminder for developers: test on the patterns your users actually care about, not just on average benchmark scores. ParallelBench, ICLR 2026&lt;/p&gt;

&lt;p&gt;Researchers are also trying to make diffusion models smarter about when to generate in parallel. Learn2PD, another ICLR 2026 paper, uses a lightweight filter to decide which token predictions are ready to accept. Its reported speedups are promising, but they come from specific experiments your results may differ. Learn2PD, ICLR 2026&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, which one should you choose?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For general chat, streaming, and tasks where every next word depends on the last, autoregressive models are a strong place to start. For filling gaps, revising multiple regions, or generating outputs with room for parallel work, diffusion models are worth testing.&lt;/p&gt;

&lt;p&gt;The interesting question isn’t simply which model is faster. It’s whether your task gives a model enough room to work on several parts at once without losing the connections that make the answer correct.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Papers and further reading&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Aaron Lou, Chenlin Meng, and Stefano Ermon. &lt;a href="https://proceedings.mlr.press/v235/lou24a.html" rel="noopener noreferrer"&gt;Discrete Diffusion Modeling by Estimating the Ratios of the Data Distribution (SEDD)&lt;/a&gt;, ICML 2024.&lt;/li&gt;
&lt;li&gt;Shansan Gong et al. &lt;a href="https://arxiv.org/abs/2410.17891" rel="noopener noreferrer"&gt;Scaling Diffusion Language Models via Adaptation from Autoregressive Models&lt;/a&gt;, ICLR 2025.&lt;/li&gt;
&lt;li&gt;Daniel Israel, Guy Van den Broeck, and Aditya Grover. &lt;a href="https://arxiv.org/abs/2506.00413" rel="noopener noreferrer"&gt;Accelerating Diffusion LLMs via Adaptive Parallel Decoding&lt;/a&gt;, 2025.&lt;/li&gt;
&lt;li&gt;Wonjun Kang et al. &lt;a href="https://arxiv.org/abs/2510.04767" rel="noopener noreferrer"&gt;ParallelBench: Understanding the Trade-offs of Parallel Decoding in Diffusion LLMs&lt;/a&gt;, ICLR 2026.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://proceedings.iclr.cc/paper_files/paper/2026/hash/3dd84aeae46ad92cdff18b3c9d68ab21-Abstract-Conference.html" rel="noopener noreferrer"&gt;Scaling Behavior of Discrete Diffusion Language Models&lt;/a&gt;, ICLR 2026.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>machinelearning</category>
      <category>research</category>
    </item>
    <item>
      <title>AI Can Write Code. Engineers Still Have to Make It Work.</title>
      <dc:creator>Jojo</dc:creator>
      <pubDate>Mon, 02 Nov 2026 05:50:59 +0000</pubDate>
      <link>https://dev.to/jyotshana_0905/ai-can-write-code-engineers-still-have-to-make-it-work-3c61</link>
      <guid>https://dev.to/jyotshana_0905/ai-can-write-code-engineers-still-have-to-make-it-work-3c61</guid>
      <description>&lt;p&gt;Marc Benioff and Mark Zuckerberg have made bold predictions about AI and software engineering. But writing code is only one part of the job and the tools that generate it still need people to guide, review and improve their work.&lt;/p&gt;

&lt;p&gt;Picture an AI coding assistant producing a patch that looks right. It compiles. The tests pass. But it misunderstands a requirement, breaks an older feature, or mishandles an unusual case.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Someone still has to notice.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is my concern when I hear predictions that AI will replace software engineers. Generating code is not the same as building dependable software. Engineers have to understand what people need, fit changes into complicated systems, test what could go wrong and take responsibility for the result. AI can help with parts of that work, but it does not make the rest disappear.&lt;/p&gt;

&lt;p&gt;In late 2024, Salesforce CEO Marc Benioff said the company might not add software engineers in 2025, citing productivity gains from AI tools. In January 2025, Meta CEO Mark Zuckerberg predicted that AI could become “a sort of mid-level engineer” that could write code. Those were significant statements, but they were forecasts about productivity and capability not proof that companies no longer need engineers.&lt;/p&gt;

&lt;p&gt;There is a difference between a company deciding it can do more with its current team and a company being able to build and run software without engineers. Benioff’s comments were about Salesforce’s hiring plans. Zuckerberg was describing what he expected AI to be able to do. Neither statement, on its own, shows that AI can independently understand a product, maintain a large system and make sound decisions when something goes wrong.&lt;/p&gt;

&lt;p&gt;A 2025 study by the research organization METR offers one useful test of the productivity claims. Sixteen experienced developers completed 246 tasks in open-source projects they knew well. For those tasks, the developers took 19% longer on average when they could use the AI tools tested. Yet after the study, they estimated that AI had made them faster.&lt;/p&gt;

&lt;p&gt;That result needs context. It was a small study of experienced developers working in familiar, complex codebases, using a particular set of tools in early 2025. It does not prove that AI always slows engineers down. It does show that code generation and real-world productivity are different things and that perceived speed can differ from measured completion time. METR’s paper describes the study and its limits.&lt;/p&gt;

&lt;p&gt;Google’s DORA research points to a related challenge at the team level. Its 2024 report found that higher AI adoption was associated with lower software delivery throughput and stability in the organizations studied. That is an association, not proof that AI caused the decline. The report suggests one possible reason: AI can help produce code faster, while larger changes can take longer to review and make systems less stable. Faster output still needs effective testing and review. &lt;/p&gt;

&lt;p&gt;This is why engineers remain essential even when AI writes more of the code. People have to explain the goal, supply context the model may not have, judge whether the result meets the need, and feed mistakes and user feedback back into the system. That feedback might come from a failed test, a bug report, a customer who cannot complete a task, or an engineer who spots a security problem during review.&lt;br&gt;
The same is true of the AI tools themselves. They depend on software, data pipelines, computing infrastructure, integrations, monitoring and safeguards. Engineers build and maintain those systems. Human feedback helps teams see where an AI feature is useful, where it fails, and what needs to change.&lt;/p&gt;

&lt;p&gt;AI will change engineering work. It may automate some routine tasks, help teams move faster in some situations and affect how companies hire. But the real question is not simply whether AI can write code. It is whether it can reliably help deliver software that meets people’s needs and who checks that it does.&lt;/p&gt;

&lt;p&gt;For now, the evidence supports a more careful conclusion than “engineers are being replaced.” AI can generate code. Engineers make sure that code belongs in a product, works in the system around it, and serves the people who use it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marc Benioff’s 20VC interview&lt;/li&gt;
&lt;li&gt;Mark Zuckerberg’s January 2025 interview with Joe Rogan&lt;/li&gt;
&lt;li&gt;METR’s developer productivity study&lt;/li&gt;
&lt;li&gt;Google Cloud’s summary of the 2024 DORA report&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>developers</category>
      <category>programming</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>I Asked My Neural Network to Try Again. Then I Asked It to Learn Only from Its Best Answer.</title>
      <dc:creator>Jojo</dc:creator>
      <pubDate>Fri, 30 Oct 2026 20:40:16 +0000</pubDate>
      <link>https://dev.to/jyotshana_0905/i-asked-my-neural-network-to-try-again-then-i-asked-it-to-learn-only-from-its-best-answer-3cj6</link>
      <guid>https://dev.to/jyotshana_0905/i-asked-my-neural-network-to-try-again-then-i-asked-it-to-learn-only-from-its-best-answer-3cj6</guid>
      <description>&lt;p&gt;Training a neural network can take a lot of time. I used to think the obvious fix was simply to make the model smaller or find faster hardware. Those can help, but I’ve learned that training time has several possible bottlenecks: the model’s architecture, the way it processes data and updates its weights, and how effectively it uses the hardware.&lt;/p&gt;

&lt;p&gt;That led me to a more surprising question: &lt;strong&gt;What if a model generated several answers, but learned only from the best one?&lt;/strong&gt;&lt;br&gt;
The idea sounds simple. A model produces multiple candidate outputs. A scoring method picks the strongest candidate, and training focuses on that one. Instead of treating every attempt as equally useful, the model gives its learning signal to the answer that best meets the goal.&lt;/p&gt;

&lt;p&gt;I found connections to selective backpropagation and rejection sampling. Selective backpropagation chooses which examples contribute to the model’s gradient updates. In some reinforcement learning fine-tuning methods, rejection sampling filters generated answers so that preferred ones can be used for further training. They share a broad idea—being selective about what the model learns from but they are not the same technique.&lt;/p&gt;

&lt;p&gt;I also came across early exit architectures, which sound related but solve a different problem. They let a model stop processing an input early when it already has a confident answer. That can save computation during inference. It does not, by itself, mean generating multiple answers and training on only the best one.&lt;br&gt;
The catch is that &lt;strong&gt;“try several and keep the best”&lt;/strong&gt; is not automatically faster. Generating and scoring extra answers costs time, and the scoring method has to choose well. If it takes too much effort to find the winner or if the winner is not actually useful the approach may not save training time.&lt;/p&gt;

&lt;p&gt;What I learned is that speeding up training isn’t only about making every step faster. It can also mean asking which steps are worth taking at all. The challenge is finding the right balance: give the model enough chances to produce a strong answer, then make sure the learning signal goes to the attempts that genuinely help it improve.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>deeplearning</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>From Rules to Reasoning: How AI Evolved into Agents</title>
      <dc:creator>Jojo</dc:creator>
      <pubDate>Sun, 25 Oct 2026 21:53:15 +0000</pubDate>
      <link>https://dev.to/jyotshana_0905/from-rules-to-reasoning-how-ai-evolved-into-agents-1geb</link>
      <guid>https://dev.to/jyotshana_0905/from-rules-to-reasoning-how-ai-evolved-into-agents-1geb</guid>
      <description>&lt;p&gt;When I look at how artificial intelligence has developed, I see a journey from computers that could only follow instructions to systems that can understand a goal and take steps toward completing it. AI didn’t arrive all at once. Each stage built on the ideas and technology that came before it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The flow of AI’s evolution is:&lt;/strong&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi0fmva7ka1xeck4x7xqt.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi0fmva7ka1xeck4x7xqt.png" alt="AI evolution flowchart: rule-based AI to machine learning, deep learning, large language models, and AI agents" width="800" height="547"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  It began with rules
&lt;/h2&gt;

&lt;p&gt;The modern field of AI is often traced to a 1956 workshop at Dartmouth College, where researchers explored whether machines could imitate parts of human intelligence. &lt;a href="https://ai.dartmouth.edu/founding-and-future-ai" rel="noopener noreferrer"&gt;Dartmouth’s history of AI&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The earliest AI programs worked by following rules that people had written for them. They could solve puzzles, prove mathematical statements, or play simple games but only when the problem fit the rules they had been given. If something unexpected happened, they usually couldn’t adapt.&lt;/p&gt;

&lt;p&gt;That makes me think of these systems as highly capable instruction followers. They could do specific jobs, but they couldn’t learn from experience or handle every situation on their own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then AI learned from examples
&lt;/h2&gt;

&lt;p&gt;Researchers eventually began asking a different question: what if, instead of writing every rule, we gave computers examples and let them find patterns?&lt;/p&gt;

&lt;p&gt;That idea led to machine learning. A system could study examples—such as labeled pictures of cats and dogs and learn to tell them apart. It didn’t need someone to spell out every feature to look for.&lt;/p&gt;

&lt;p&gt;Machine learning helped power tools such as recommendation systems, fraud detection, and speech recognition. AI was becoming more adaptable, but most systems were still designed for one kind of task at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Deep learning helped AI recognize more complex patterns
&lt;/h2&gt;

&lt;p&gt;As computers became faster and more data became available, deep learning made it possible to train larger neural networks. These systems could learn complex patterns in images, speech, and text.&lt;/p&gt;

&lt;p&gt;This helped improve voice assistants, image recognition, and language translation. Instead of relying on people to define every useful feature, a deep learning system could learn many of those patterns from data.&lt;/p&gt;

&lt;p&gt;AI was getting better at understanding different kinds of information, but its skills were often still separated. One system might recognize speech while another translated it. People had to connect the pieces.&lt;/p&gt;

&lt;h2&gt;
  
  
  Large language models made AI easier to talk to
&lt;/h2&gt;

&lt;p&gt;Large language models changed how many of us interact with AI. We could ask questions in everyday language and get help writing, summarizing, brainstorming, or coding.&lt;/p&gt;

&lt;p&gt;That made AI feel more accessible. I didn’t need to know a special command or how a system worked behind the scenes; I could describe what I wanted.&lt;/p&gt;

&lt;p&gt;But a useful answer isn’t always the same as a completed task. A language model might explain how to find information or update a document, but it couldn’t necessarily do those things by itself. It could also make mistakes or present uncertain information as if it were true.&lt;/p&gt;

&lt;h2&gt;
  
  
  Now AI is moving from answering to acting
&lt;/h2&gt;

&lt;p&gt;Today’s AI agents build on language models by giving them access to tools. Depending on the system, an agent may be able to search the web, work with files, run code, or interact with other software.&lt;/p&gt;

&lt;p&gt;The change is that I can give an agent a goal, and it may break that goal into steps, use tools, check what happened, and continue. A chatbot might suggest how to plan a trip; an agent might research options and prepare an itinerary. A coding assistant might suggest a change; an agent might edit files and run commands.&lt;/p&gt;

&lt;p&gt;“AI agent” can describe systems with very different levels of independence, though. Some need frequent direction, while others can work through several steps with less supervision. A recent survey of deployed agents found variation in both their capabilities and their published safety information. &lt;a href="https://aiagentindex.mit.edu/2025/" rel="noopener noreferrer"&gt;2025 AI Agent Index&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This evolution is impressive, but today’s agents still make mistakes. They can misunderstand instructions, choose the wrong tool, or lose track of a detail in a longer task. Stanford’s 2026 AI Index reported that AI systems had improved on a benchmark of multistep assistant tasks, while still trailing the reported human baseline. &lt;a href="https://hai.stanford.edu/ai-index/2026-ai-index-report/technical-performance" rel="noopener noreferrer"&gt;Stanford HAI, AI Index 2026&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s why I think trust will matter as much as capability. An agent that drafts an email is different from one that sends it. An agent that prepares a purchase is different from one that completes it. People need to know what an agent can access, what it can change, and when it should ask for approval.&lt;/p&gt;

&lt;p&gt;AI has evolved from following rules to learning from data, communicating with us, and beginning to take action. The next step is making agents reliable enough to handle more complex work and clear enough that we can stay in control.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>chatgpt</category>
      <category>automation</category>
    </item>
    <item>
      <title>Building an AI Issue Triage Assistant with Python, Spring Boot, and React</title>
      <dc:creator>Jojo</dc:creator>
      <pubDate>Mon, 12 Oct 2026 18:50:21 +0000</pubDate>
      <link>https://dev.to/jyotshana_0905/building-an-ai-issue-triage-assistant-with-python-spring-boot-and-react-2n07</link>
      <guid>https://dev.to/jyotshana_0905/building-an-ai-issue-triage-assistant-with-python-spring-boot-and-react-2n07</guid>
      <description>&lt;p&gt;GitHub maintainers spend time reading new issues, deciding which label fits, and checking whether a similar report already exists. I built an Issue Triage Assistant to explore how machine learning can make that first pass faster while keeping the final decision with a person.&lt;/p&gt;

&lt;p&gt;The app takes an issue title and optional description. It suggests one of three labels—&lt;strong&gt;Bug&lt;/strong&gt;, &lt;strong&gt;Docs&lt;/strong&gt;, or &lt;strong&gt;Enhancement&lt;/strong&gt;—and links to five related pandas issues. You can &lt;a href="https://issue-triage-sreszx22aynsgym2mtkwes.streamlit.app/" rel="noopener noreferrer"&gt;try the public demo&lt;/a&gt; or &lt;a href="https://github.com/Jyotshana111/issue-triage" rel="noopener noreferrer"&gt;explore the code on GitHub&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This project helped me connect several technologies in one workflow: Python for data and ML, FastAPI for model serving, Spring Boot for a Java API layer, and React for the local browser interface.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project workflow
&lt;/h2&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7d8utuav0fie8us06a3.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu7d8utuav0fie8us06a3.png" alt="Issue Triage Assistant workflow showing model training, the local and public interfaces, and the saved model feeding analysis" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting with real issue data
&lt;/h2&gt;

&lt;p&gt;I used the GitHub Search API to collect 1,000 recent issues from pandas-dev/pandas. For each issue, I saved its title, description, labels, URL, and creation date. Using public issues made the project more realistic than training on a handful of invented examples.&lt;/p&gt;

&lt;p&gt;The raw labels needed care. An issue can have many labels, or none. For classification, I kept an issue only when it had &lt;strong&gt;exactly one&lt;/strong&gt; of the three target labels. That gives each training example one clear answer without pretending that every pandas label belongs to my three-class problem.&lt;/p&gt;

&lt;p&gt;I also removed label-like prefixes such as BUG:, DOC:, and ENH: from titles before training. Otherwise the model could learn to spot the answer in the title prefix instead of learning from the actual report. That was an important lesson about &lt;strong&gt;data leakage&lt;/strong&gt;: a model can appear useful while relying on a shortcut that will disappear in real use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two kinds of text features
&lt;/h2&gt;

&lt;p&gt;The classifier combines two representations of each issue:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;TF-IDF word features&lt;/strong&gt; capture useful words and two-word phrases. Terms such as read_csv, error, or documentation can be strong clues.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sentence embeddings&lt;/strong&gt; from the all-MiniLM-L6-v2 model capture broader meaning, even when two reports do not use exactly the same words.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I join those features and train a balanced logistic regression classifier. TF-IDF uses the title and up to 1,500 characters of the description; the sentence embeddings use the title and up to 1,000 characters. A stratified train/test split produces a held-out classification report; after that check, the final model is retrained on all eligible labeled issues and saved for the app.&lt;/p&gt;

&lt;p&gt;In an evaluation run on October 13, 2026, 713 of the 1,000 collected issues had exactly one target label: 459 Bug, 144 Docs, and 110 Enhancement. On a 143-issue held-out set, the classifier reached 0.94 accuracy. F1 scores were 0.96 for Bug, 0.88 for Docs, and 0.91 for Enhancement. These numbers measure label classification on this dataset, not whether the search finds actual duplicates. The class counts and scores can change when the issue collection is refreshed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Finding related issues
&lt;/h2&gt;

&lt;p&gt;For search, I create a sentence embedding for every stored issue and normalize the vectors. The incoming report is embedded the same way. The app ranks stored issues by the dot product of the normalized vectors, which is cosine similarity, and returns the top five with links to the original GitHub reports.&lt;/p&gt;

&lt;p&gt;This is &lt;strong&gt;similarity search&lt;/strong&gt;, not a verified duplicate detector. A high score says that the texts are close in the model's vector space; it does not prove that the reports describe the same bug. Even two reports about read_csv might involve different failures. A maintainer needs to open the links and decide what they mean.&lt;/p&gt;

&lt;p&gt;The search also has a clear boundary: it can only return issues among the 1,000 collected reports. If a relevant issue is outside that collection, the app cannot find it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connecting Python, Java, and React
&lt;/h2&gt;

&lt;p&gt;The local full-stack version has this request path:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;React + Vite → Spring Boot /api/analyze → FastAPI /analyze → Python model&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The React page sends a title and optional description. Spring Boot forwards the request to FastAPI. Python loads the saved classifier, predicts a label, runs the similarity search, and returns both results. React then displays the suggested label and linked reports.&lt;/p&gt;

&lt;p&gt;I added the Java layer to practice connecting services across languages and keeping a clear API boundary. It also made me think about request and response contracts: the browser, Java service, and Python service all need to agree on the same JSON fields.&lt;/p&gt;

&lt;p&gt;For the public demo, I built a separate Streamlit interface that loads the &lt;strong&gt;same saved Python model and search index directly&lt;/strong&gt;. This lets someone try the project through one link without starting three local servers. The React/Spring Boot/FastAPI flow remains in the repository for anyone who wants to run and inspect the full-stack architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying a report
&lt;/h2&gt;

&lt;p&gt;For example, enter:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;read_csv crashes when the file has an empty header&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The demo suggests &lt;strong&gt;Bug&lt;/strong&gt; and returns five related pandas issues. The linked reports are starting points for investigation, not an automatic duplicate verdict. You can also try the documentation and enhancement examples in the demo to see how the predicted label changes with the wording and context.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I learned and what comes next
&lt;/h2&gt;

&lt;p&gt;The most useful lesson was that building an ML feature includes more than fitting a model. I had to collect and clean data, prevent easy label leakage, evaluate on held-out examples, make inference consistent with training, design an API, and explain the limits of the output in the interface.&lt;/p&gt;

&lt;p&gt;There is still room to improve. The current collection is limited, and I have not built a benchmark of confirmed duplicate and non-duplicate issue pairs. A next step is to create such an evaluation set and measure whether the related-issue ranking actually helps find true duplicates. I would also expand and refresh the issue index and track classification performance separately for Bug, Docs, and Enhancement over time.&lt;/p&gt;

&lt;p&gt;If you try it, I would be interested in examples where the suggested label or related issues are useful—or where they clearly miss the mark. Those cases are the best guide for the next iteration.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://issue-triage-sreszx22aynsgym2mtkwes.streamlit.app/" rel="noopener noreferrer"&gt;Try the live Issue Triage Assistant&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Jyotshana111/issue-triage" rel="noopener noreferrer"&gt;Read the source code and setup guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Disclosure: This article was drafted and edited with AI assistance. Its technical claims were checked against the project source code.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>machinelearning</category>
      <category>java</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
