<?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: Anudeep Adiraju</title>
    <description>The latest articles on DEV Community by Anudeep Adiraju (@anudeepadi).</description>
    <link>https://dev.to/anudeepadi</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%2F568171%2F5910d1dd-d295-4865-986d-40b2c6793332.jpeg</url>
      <title>DEV Community: Anudeep Adiraju</title>
      <link>https://dev.to/anudeepadi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anudeepadi"/>
    <language>en</language>
    <item>
      <title>Research Paper AI: Building an Academic Search Engine with Bright Data</title>
      <dc:creator>Anudeep Adiraju</dc:creator>
      <pubDate>Tue, 17 Dec 2024 05:26:58 +0000</pubDate>
      <link>https://dev.to/anudeepadi/research-paper-ai-building-an-academic-search-engine-with-bright-data-4c5e</link>
      <guid>https://dev.to/anudeepadi/research-paper-ai-building-an-academic-search-engine-with-bright-data-4c5e</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/brightdata"&gt;Bright Data Web Scraping Challenge&lt;/a&gt;: Most Creative Use of Web Data for AI Models&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;As someone deeply interested in academic research, I often found myself juggling between different websites to find relevant papers and research work. I wanted a tool that could simplify this process, so I built Research Paper AI.&lt;/p&gt;

&lt;p&gt;Research Paper AI is a streamlined academic search engine that scrapes papers from various sources like arXiv and Google Scholar in real-time. What makes it special is how it uses Bright Data's infrastructure to reliably access these academic sources, which are typically challenging to scrape due to their anti-bot measures and complex structures.&lt;/p&gt;

&lt;p&gt;The magic happens when you type in a search query - the app simultaneously searches across multiple academic sources, handling all the complexities of web scraping behind the scenes, and presents you with clean, unified results. Think of it as your personal research assistant that knows how to navigate the academic web.&lt;/p&gt;

&lt;p&gt;Here's what it looks like in action:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Main search interface&lt;br&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%2Fr5ylkxffaklv9xc806q4.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%2Fr5ylkxffaklv9xc806q4.png" alt="Image description" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search results with papers&lt;br&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%2Fdubymgcverj7qetkwdyu.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%2Fdubymgcverj7qetkwdyu.png" alt="Image description" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  How I Used Bright Data
&lt;/h2&gt;

&lt;p&gt;This is where things get interesting! Academic websites are notoriously tricky to scrape - they have CAPTCHAs, rate limits, and sometimes require complex JavaScript rendering. Bright Data's tools made these challenges much more manageable.&lt;/p&gt;

&lt;p&gt;Here's how I leveraged Bright Data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Scraping Browser Integration&lt;/strong&gt;: I used Bright Data's Scraping Browser to handle JavaScript-heavy pages and bypass anti-bot measures. Here's a snippet of how it works:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BrightScraper&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;__init__&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;Dict&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;username&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;config&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;password&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;proxy_url&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;http://&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;:&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;password&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;@&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;host&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;scrape_arxiv&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;query&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;search_url&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;proxy&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;proxy_url&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="c1"&gt;# Bright Data handles all the complex stuff behind the scenes
&lt;/span&gt;            &lt;span class="n"&gt;html&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;text&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;_parse_results&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Proxy Management&lt;/strong&gt;: Instead of dealing with proxy rotation and management myself, Bright Data's infrastructure handles it automatically. This means:

&lt;ul&gt;
&lt;li&gt;No more blocked requests&lt;/li&gt;
&lt;li&gt;Reliable access to academic sources&lt;/li&gt;
&lt;li&gt;Clean, consistent data collection&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The real breakthrough came when dealing with Google Scholar, which is typically very difficult to scrape. Bright Data's tools made it feel almost trivial!&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend&lt;/strong&gt;: React + TailwindCSS (because life's too short for bad UIs)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend&lt;/strong&gt;: FastAPI (because async is awesome)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scraping&lt;/strong&gt;: Bright Data's Scraping Browser&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Sources&lt;/strong&gt;: arXiv, Google Scholar&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Interesting Challenges
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The CAPTCHA Conundrum&lt;/strong&gt;: Academic sites love their CAPTCHAs. Bright Data's Scraping Browser handled these seamlessly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rate Limiting&lt;/strong&gt;: Initially, I was getting blocked after a few requests. Switching to Bright Data's proxy network solved this instantly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JavaScript Rendering&lt;/strong&gt;: Some sites needed full JavaScript execution to load content. The Scraping Browser handled this without breaking a sweat.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Future Plans
&lt;/h2&gt;

&lt;p&gt;I'm excited to add more features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;More academic sources (IEEE, Semantic Scholar)&lt;/li&gt;
&lt;li&gt;Citation network visualization&lt;/li&gt;
&lt;li&gt;Paper similarity analysis&lt;/li&gt;
&lt;li&gt;PDF content extraction&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Want to Try It Yourself?
&lt;/h2&gt;

&lt;p&gt;Check out the &lt;a href="https://github.com/anudeepadi/research-paper-ai.git" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and give it a spin! The setup is pretty straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repo&lt;/li&gt;
&lt;li&gt;Add your Bright Data credentials&lt;/li&gt;
&lt;li&gt;Run the backend and frontend&lt;/li&gt;
&lt;li&gt;Start discovering papers!&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Building Research Paper AI was a fantastic learning experience. Bright Data's tools turned what could have been a complex scraping nightmare into a manageable and fun project. The best part? It actually solves a real problem that researchers face daily.&lt;/p&gt;

&lt;h1&gt;
  
  
  brightdatachallenge #webdev #api #ai
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>brightdatachallenge</category>
      <category>api</category>
      <category>webdev</category>
    </item>
    <item>
      <title>FinWise: Your AI-Powered Financial Advisor 🌟</title>
      <dc:creator>Anudeep Adiraju</dc:creator>
      <pubDate>Wed, 01 May 2024 18:26:00 +0000</pubDate>
      <link>https://dev.to/anudeepadi/finwise-your-ai-powered-financial-advisor-4fno</link>
      <guid>https://dev.to/anudeepadi/finwise-your-ai-powered-financial-advisor-4fno</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/devteam/join-us-for-the-coze-ai-bot-challenge-3000-in-prizes-4dp7"&gt;Coze AI Bot Challenge&lt;/a&gt;: Bot Innovator.&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;FinWise is an AI-powered bot designed to revolutionize personal finance management. It offers personalized financial advice and guidance, helping users create budgets, set financial goals, and make informed decisions about investments, savings, and debt management. FinWise analyzes a user's unique financial situation and provides actionable recommendations tailored to their specific needs.&lt;/p&gt;

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

&lt;p&gt;Try out FinWise in the Coze Bot Store: FinWise Bot&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Configuration
&lt;/h2&gt;

&lt;p&gt;Here's a look at FinWise's configuration, including prompts and skills used:&lt;/p&gt;

&lt;h2&gt;
  
  
  Journey
&lt;/h2&gt;

&lt;p&gt;Building FinWise was an incredible learning experience. I started by researching the most common financial challenges people face and how AI could help solve them. I then broke down the bot's functionality into key features like budgeting, goal setting, debt management, and investment advice.&lt;/p&gt;

&lt;p&gt;One of the biggest challenges was creating a user-friendly interface that could gather the necessary financial information without overwhelming the user. I spent a lot of time refining the prompts and conversation flow to make it as intuitive as possible.&lt;/p&gt;

&lt;p&gt;I'm particularly proud of FinWise's ability to provide personalized recommendations based on each user's unique financial situation. By leveraging AI, the bot can analyze a user's data and offer tailored advice that would typically require a human financial advisor.&lt;/p&gt;

&lt;p&gt;Moving forward, I hope to expand FinWise's capabilities to include features like real-time market updates, retirement planning, and integration with popular budgeting apps. I also plan to gather user feedback to continuously improve the bot's functionality and user experience.&lt;/p&gt;

&lt;p&gt;Overall, participating in the Coze AI Bot Challenge has been a fantastic opportunity to push the boundaries of what's possible with AI and create a bot that has the potential to make a real difference in people's financial lives.&lt;/p&gt;

</description>
      <category>cozechallenge</category>
      <category>devchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
