<?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: diosamuel</title>
    <description>The latest articles on DEV Community by diosamuel (@diosamuel).</description>
    <link>https://dev.to/diosamuel</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%2F360027%2F05467f63-4d12-496b-9407-9b313e017ad2.png</url>
      <title>DEV Community: diosamuel</title>
      <link>https://dev.to/diosamuel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/diosamuel"/>
    <language>en</language>
    <item>
      <title>Tutorial Screen Mirror Android via Website</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Tue, 19 Aug 2025 14:02:21 +0000</pubDate>
      <link>https://dev.to/diosamuel/tutorial-screen-mirror-android-via-website-3aii</link>
      <guid>https://dev.to/diosamuel/tutorial-screen-mirror-android-via-website-3aii</guid>
      <description>&lt;h1&gt;
  
  
  Connect ADB
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Lihat device adb
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;adb devices&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buka port tcp 5555
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;adb tcpip 5555&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lihat ip address wlan (wifi)
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;adb shell ifconfig wlan0&lt;/code&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fbeffq4ypmpon9anxdcjc.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%2Fbeffq4ypmpon9anxdcjc.png" alt=" " width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Koneksi via wlan
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;adb connect {{ip address}}:5555&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  Website
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Download Docker&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;https://www.docker.com/products/docker-desktop/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Download Project
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;git clone https://github.com/Shmayro/ws-scrcpy-docker&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Jalankan Web App
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;docker compose up -d&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;



&lt;p&gt;&lt;code&gt;docker exec scrcpy-web adb connect {{ip address}}:5555&lt;/code&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fbbfclepksc0k1rzvv9bs.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%2Fbbfclepksc0k1rzvv9bs.png" alt=" " width="800" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buka Web&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="http://localhost:8000/" rel="noopener noreferrer"&gt;http://localhost:8000/&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2Ft1zccl35a1em6amecndf.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%2Ft1zccl35a1em6amecndf.png" alt=" " width="800" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Klik H264_Converter&lt;/li&gt;
&lt;/ol&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%2Fsummk3o3zp2zvsb81d7z.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%2Fsummk3o3zp2zvsb81d7z.png" alt=" " width="478" height="917"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  Tunneling agar bisa diakses secara online
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Download ngrok&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://dashboard.ngrok.com/" rel="noopener noreferrer"&gt;https://dashboard.ngrok.com/&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Atur akses ngrok
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;ngrok http localhost:8000&lt;/code&gt;&lt;br&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.amazonaws.com%2Fuploads%2Farticles%2Fy2m924ihsqz8dvr60hcf.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%2Fy2m924ihsqz8dvr60hcf.png" alt=" " width="800" height="214"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Buka link web diatas&lt;/li&gt;
&lt;/ol&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%2Fezlvfxaq0m9jjxnrlbr6.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%2Fezlvfxaq0m9jjxnrlbr6.png" alt=" " width="697" height="908"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>scrcpy</category>
    </item>
    <item>
      <title>Introduction to Generative Artificial Intelligence - Storyteller</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Thu, 31 Jul 2025 10:01:36 +0000</pubDate>
      <link>https://dev.to/diosamuel/introduction-to-generative-artificial-intelligence-storyteller-1p36</link>
      <guid>https://dev.to/diosamuel/introduction-to-generative-artificial-intelligence-storyteller-1p36</guid>
      <description>&lt;p&gt;Hi! Just to make sure, this is just a taking-note, storyteller-type log for the AWS Quiz as part of pursuing my career as a Data Engineer (what's really funny is I started from cloud engineering stuff 😅).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I'm the forgetful type, so taking notes is a must.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This answer is really based on the learning at:&lt;br&gt;
&lt;a href="https://awseducate.instructure.com/courses/1108" rel="noopener noreferrer"&gt;https://awseducate.instructure.com/courses/1108&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2Fv16zjofjab6r4wzojmqe.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%2Fv16zjofjab6r4wzojmqe.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How can I explain Gen-AI to company executive members? Just use simple words and throw away the tech stuff like: creating new content and ideas, conversations, stories, images, videos, and music.&lt;/p&gt;

&lt;p&gt;Now the CTO wants to ask about how the technology works, and whether Amazon has experience with Gen AI. Let's start explaining with:&lt;br&gt;
Gen AI is powered by large ML models called foundation models, or FMs.&lt;br&gt;
When using FMs, customers can use the same pretrained model to adapt to multiple tasks.&lt;/p&gt;

&lt;p&gt;Ok, now your team wants to have an AI assistant for generating code.&lt;br&gt;
Ask which AWS service can be embedded in an IDE, turns out, Amazon Q Developer can handle this easily. But it's not just your team that wants to be more productive, other employees want to boost productivity too, with things like code generation and conversational search, so Amazon Q Developer is like swiss-army-knife for productivity.&lt;/p&gt;

&lt;p&gt;Your team has a machine learning model for a client. The client asks to deploy it on AWS because they really like AWS. So your team does some brainstorming and finds out that AWS Trainium can help host ML training.&lt;br&gt;
The client also needs more ordinary machine learning models, and Amazon SageMaker JumpStart has a list of machine learning use cases that can be deployed readily on the go.&lt;/p&gt;

&lt;p&gt;Back to generative AI, in order to generate images from a text prompt, you must use a Foundation Model (FM) called Multimodal FMs. Multimodal FMs can understand and generate both text and images.&lt;br&gt;
What prompt engineering really is: prompt engineering is the process of designing and refining the instructions for a language model to generate specific types of output.&lt;br&gt;
AI can really enhance customer experience — like with chatbots and virtual assistants. These two use cases are just a couple of examples, and there are many more you can try.&lt;/p&gt;

</description>
      <category>aws</category>
    </item>
    <item>
      <title>📰The Future of Journalism Is Here: AI-Powered News Sentiment Agent</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Sun, 06 Jul 2025 15:49:22 +0000</pubDate>
      <link>https://dev.to/diosamuel/welcome-the-future-of-journalism-is-here-ai-powered-news-sentiment-agent-4f66</link>
      <guid>https://dev.to/diosamuel/welcome-the-future-of-journalism-is-here-ai-powered-news-sentiment-agent-4f66</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/runnerh"&gt;Runner H "AI Agent Prompting" Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;We agree that media influences nearly all industries and aspects of the world, which is why staying updated with the news every day is essential. But does that mean we have to track the media 24 hours a day? 🤔&lt;/p&gt;

&lt;p&gt;Meet Lana👋🏻 a journalist who works for a small media agency. Her daily task is to write news updates and summarize articles from major media outlets, often adding sentiment analysis and predicting what the media might do next about the topic and what industries will affect of this sentiment.&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%2Fcdfwille8na93m7r5psk.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%2Fcdfwille8na93m7r5psk.png" alt="Lana, 24/7 Journalist"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Working in a small team of just 5–8 people, Lana finds this workload exhausting. "Tracking news across multiple sources is overwhelming" she says. What she needs is an AI agent that can assist her helping to monitor, analyze, and summarize the news so she can focus on creating valuable stories.&lt;/p&gt;

&lt;p&gt;So, I created a &lt;strong&gt;News Intelligence AI Agent&lt;/strong&gt; prompt that can scrape all news articles on a specific topic from the past 72 hours, summarize each one, perform sentiment analysis, and save the results to Google Sheets and Google Docs. It then sends a daily report via Gmail. I integrated it with RunnerH, and voila! - it saves a significant amount of time because RunnerH automatically handles it.&lt;/p&gt;

&lt;p&gt;Let's break down how I built this, step by step👇🏻.&lt;/p&gt;

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

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/N8up0HaHtDE"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://runner.hcompany.ai/chat/3ab9290a-944c-4da8-8923-40fa1ff01ddc/share" rel="noopener noreferrer"&gt;My AI-Agent RunnerH&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Runner H
&lt;/h2&gt;

&lt;p&gt;The first thing is pass this prompt to RunnerH&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a News Intelligence AI Agent
Your task is to analyze recent news about a specific topic (Donald Trump) from the past 3 months, classify sentiment, and deliver structured insights through Google Sheets, Google Docs, and Gmail.
Instructions (Step-by-Step Workflow):
1. News Collection:
    Search trusted sources (e.g., Google News, CNN, CNBC, Bloomberg, NYTimes) for relevant news about Donald Trump.
    Collect 10 news articles in past 72 hours (3 days)

2. Extract &amp;amp; Structure the Data:
For each article, extract the following fields:
| Title | Source | Date | Sentiment | Summary | Justification | URL |
    Title: Article headline
    Source: Publisher (e.g., CNN)
    Date: Date of publication
    Summary: 2–3 sentence summary
    Sentiment: Positive ✅ / Neutral ⚪️ / Negative 🚩
    Justification: Brief quote or reason
    URL: Full article link

3. Sentiment Classification Criteria:
    Use sentiment-indicative keywords (e.g., "charged", "praised", "under investigation", "wins", "violated")
    Analyze tone: praising, factual, skeptical, or critical
    Consider impacts, outcomes, or public reaction

4. OUTPUT TO GOOGLE SHEETS (MANDATORY):
    You must write the structured table to Google Sheets. This step is non-negotiable.
Format Requirements:
    Avoid duplicates (check by Title or URL)
    Maintain column consistency: Title | Source | Date | Sentiment | Summary | Justification | URL
You must generate or update a Google Sheet with this data and return the link.

5. 📝 GOOGLE DOCS – 1-Page Narrative Report:
Write a one-page, clean, professional summary report with:
    Headline Summary: One-paragraph summary
    Sentiment Breakdown: Count of positive/neutral/negative
    Top 3 Most Impactful Articles (with brief descriptions)
    Industries Affected (with reasons)
    Relevant Tags/Topics
Return the link to the final Google Doc report.

6. GMAIL NOTIFICATION (to email@gmail.com)
Subject:
Today's News: What's happening with Donald Trump?
Body:
Headline Summary  
What's the buzz around Donald Trump today? Let's take a look 👇🏻  
[One-paragraph summary of 2–4 top news stories]

Sentiment Analysis  
Overall Tone: [Positive ✅ / Neutral ⚪️ / Negative 🚩]  
Justification: [1–2 sentence explanation]

Industries Affected:  
1. [Industry] – [Why it’s affected]  
2. [Industry] – [Why it’s affected]  
3. [Industry] – [Why it’s affected]

Relevant Tags:  
[tag1], [tag2], [tag3], [tag4], [tag5]

Reports:  
- Full News List (Google Sheets): [Paste Google Sheet link here]  
- Full Summary Report (Google Docs): [Paste Google Doc link here]

Constraints &amp;amp; Style:
    Use clear, concise, and professional language
    Do not fabricate news or headlines
    Avoid repetition or vague statements
    Final output should be automation-friendly (structured, consistent, and clean)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Second, turn on the Connections on RunnerH&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%2Fqs8icb9eqqv9kp45hr56.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%2Fqs8icb9eqqv9kp45hr56.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feeling confused? 😵 It's okay - take a deep breath, let's break down what this prompt does. This prompt is mainly structured into 6 key components:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Make a context
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are a News Intelligence AI Agent
Your task is to analyze recent news about a specific topic (Donald Trump) from the past 3 months, classify sentiment, and deliver structured insights through Google Sheets, Google Docs, and Gmail.
Instructions (Step-by-Step Workflow):
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before we get into the technical details, it's important to give clear context, so RunnerH knows exactly what to do and doesn't stray from the goal.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Scraping all the way, lets go! 🕷️
&lt;/h3&gt;

&lt;p&gt;RunnerH collects news articles from the past 72 hours based on a specific topic. Here briefly the prompt&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;News Collection:
    Search trusted sources (e.g., Google News, CNN, CNBC, Bloomberg, NYTimes) for relevant news about Donald Trump.
    Collect 10 news articles in past 72 hours (3 days)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the most interesting part, it's called a Web Browsing Preview (that's what it's called in RunnerH), which launches a live browser session to perform real-time news scraping right on the spot. That means RunnerH doesn't just rely on static data - it actively browses the web like a human and pulls in the freshest news as soon as you run it.&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%2Fj0d1bo7pmgthlct5dpsc.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%2Fj0d1bo7pmgthlct5dpsc.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Check out how RunnerH scrapes news through this link👇🏻&lt;br&gt;
&lt;a href="https://runner.hcompany.ai/browsing-view/3359347b-aec9-47aa-9b66-e844dcda5104" rel="noopener noreferrer"&gt;https://runner.hcompany.ai/browsing-view/3359347b-aec9-47aa-9b66-e844dcda5104&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Great job, RunnerH! I’ve never seen anything like this in any AI agent before. Now, let’s walk through each step again to see how magically RunnerH handles the entire task.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. Extract and Sentiment Analysis⚙️
&lt;/h3&gt;

&lt;p&gt;Now, RunnerH perform cleans and structures raw data by extracting the article title, content, link, and publication time, after that RunnerH analyzes the emotional tone of each article (Positive, Neutral, or Negative) using their magically LLM-NLP techniques&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;For each article, extract the following fields:
| Title | Source | Date | Sentiment | Summary | Justification | URL |
    Title: Article headline
    Source: Publisher (e.g., CNN)
    Date: Date of publication
    Summary: 2–3 sentence summary
    Sentiment: Positive ✅ / Neutral ⚪️ / Negative 🚩
    Justification: Brief quote or reason
    URL: Full article link
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the next step, this table will be saved to Google Sheets.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Save to Google Sheets 🔗
&lt;/h3&gt;

&lt;p&gt;Lana needs organized news!, so RunnerH save all structured and analyzed news data into a Google Sheet for organized viewing and filtering.&lt;br&gt;
&lt;a href="https://docs.google.com/spreadsheets/d/1cuBkBXGUy4wgAOAskVg3ie7yO0DqCKxEkzKU38mAW_Y/edit?usp=sharing" rel="noopener noreferrer"&gt;Donald Trump Newest News Generated by RunnerH&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2Fjpvrqs1ltb79n0nw7n1w.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%2Fjpvrqs1ltb79n0nw7n1w.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  5. Save to Google Docs📰
&lt;/h3&gt;

&lt;p&gt;Lana realized that her team needed a fully summarized report, as the Google Sheet alone wasn’t enough. so RunnerH generates a one-page narrative summary of insights and saves it to Google Docs for documentation or sharing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/document/d/1UTx6mV1xl39vN13c1nEmQE5HvDoBhezuMo4zJMVUJsg/edit?usp=sharing" rel="noopener noreferrer"&gt;Donald Trump Sentiment Analysis Generated by RunnerH&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2F7cbcin4eza21d0vsnhe4.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%2F7cbcin4eza21d0vsnhe4.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  6. Send Daily Report to Gmail🕒
&lt;/h3&gt;

&lt;p&gt;For the daily report, RunnerH automatically sends a formatted daily email containing a headline summary, sentiment overview, key impacts, and links to the full reports.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GMAIL NOTIFICATION (to email@gmail.com)
Subject:
Today's News: What's happening with Donald Trump?
Body:
Headline Summary  
What's the buzz around Donald Trump today? Let's take a look 👇🏻  
[One-paragraph summary of 2–4 top news stories]
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fq6id75bel1yd99zj7ayo.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%2Fq6id75bel1yd99zj7ayo.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Case &amp;amp; Impact
&lt;/h2&gt;

&lt;p&gt;Here's top real-world applications that can be implemented&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Cyrpto, Financial and Investment Firms 💸&lt;br&gt;
Monitor sentiment around public figures (e.g., Donald Trump) to predict market reactions or public policy impacts. Enables real-time portfolio adjustment based on political sentiment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reputation Brand and Management Agencies ✅&lt;br&gt;
We can track client mentions and public sentiment to craft responsive strategies React faster to potential reputation risks or capitalize on positive momentum.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Media and Journalism 📰&lt;br&gt;
Using RunnerH we can quickly aggregate and summarize trending news about key individuals, so we possible to saves editorial time and improves content accuracy and relevance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Government and Political Analysts 🏛️&lt;br&gt;
Monitor public perception of political figures to inform policy communication or campaign strategy. Offers data-driven insights for more effective political messaging.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Social Love
&lt;/h3&gt;

&lt;p&gt;Check my twitter thread below!&lt;br&gt;
&lt;iframe class="tweet-embed" id="tweet-1942057682825028063-996" src="https://platform.twitter.com/embed/Tweet.html?id=1942057682825028063"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1942057682825028063-996');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1942057682825028063&amp;amp;theme=dark"
  }



&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>runnerhchallenge</category>
      <category>ai</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>🥷antileaked.io | Telegram bot that watches your group for leaked secrets and auto-rotates them via 1Password and Pulumi ESC.</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Mon, 07 Apr 2025 06:37:02 +0000</pubDate>
      <link>https://dev.to/diosamuel/antileakedio-telegram-bot-that-watches-your-group-for-leaked-secrets-and-auto-rotates-them-via-4o79</link>
      <guid>https://dev.to/diosamuel/antileakedio-telegram-bot-that-watches-your-group-for-leaked-secrets-and-auto-rotates-them-via-4o79</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/pulumi"&gt;Pulumi Deploy and Document Challenge&lt;/a&gt;: Shhh, It's a Secret!&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Securely sync community feedback from Telegram to Slack and back — all managed with Pulumi ESC.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Meet Catherine 👩‍💻👋.&lt;/p&gt;

&lt;p&gt;She’s a Senior Project Manager at a growing tech startup. To collaborate better, Catherine created a Telegram group with her interns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;But there’s one big problem that makes Catherine anxious...&lt;/strong&gt;&lt;br&gt;
From time to time, one of the interns accidentally posts a secret in the group.&lt;br&gt;
For example:&lt;br&gt;
    "Hey, I tried this one: ghp_FAKEtoken123456789, but it didn’t work 😭"&lt;br&gt;
For Catherine, this is a serious risk:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Tokens could be misused&lt;/li&gt;
&lt;li&gt;Systems could be compromised&lt;/li&gt;
&lt;li&gt;The startup’s data could be leaked
The worst part? Catherine doesn’t have time to monitor the group 24/7.
Catherine decides to use antileaked.io, a smart Telegram bot that can:&lt;/li&gt;
&lt;li&gt;Watch all messages in the group&lt;/li&gt;
&lt;li&gt;Detect any leaked tokens or passwords&lt;/li&gt;
&lt;li&gt;Check if the leaked secret matches something stored in 1Password&lt;/li&gt;
&lt;li&gt;If it does, rotate (change) the secret automatically&lt;/li&gt;
&lt;li&gt;Send a notification to a special channel for Catherine (as the team lead)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now Catherine doesn’t need to stress or act like a group moderator.&lt;br&gt;
antileaked.io runs quietly in the background, protecting her team without interrupting their workflow.&lt;/p&gt;
&lt;h3&gt;
  
  
  How does this work?
&lt;/h3&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%2Fxa9febqxv26wo2caw1my.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%2Fxa9febqxv26wo2caw1my.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just simple like that! but powerfull tools!&lt;/p&gt;
&lt;h2&gt;
  
  
  Live Demo Link
&lt;/h2&gt;



&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/I13kfGRyxws"&gt;
  &lt;/iframe&gt;
&lt;br&gt;
You can try joining the &lt;a href="https://t.me/pulumitest" rel="noopener noreferrer"&gt;group&lt;/a&gt; I've created.&lt;br&gt;
The group is monitored by a bot I’ve built (&lt;a href="https://t.me/Bridge4Buildbot" rel="noopener noreferrer"&gt;@Bridge4Buildbot&lt;/a&gt;).&lt;br&gt;
Once you're in, you can try sending a message that contains a secret key — I’ve prepared some examples below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;values:
  dev:
    apiKey: VBCeZwSAzAFJPoxkv4diPvEH
    aws_secret_key: AKIAIOSFODNN7EXAMPLE
    catherine_gmail_password: op://myStartup Secret Vault/mail/password
    gcp_token: ya29.a0ARrdaM-fakeGCPtoken934xz_gT8KJ
    gh_token: ghp_9e2jTfA1YkE5JXZUqvNa3dMZo4KvBLpZQ7oN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;for see the difference and updated env, please send &lt;code&gt;/env&lt;/code&gt; to private chat to &lt;a href="https://t.me/Bridge4Buildbot" rel="noopener noreferrer"&gt;@Bridge4Buildbot&lt;/a&gt;, It will provide an update on the environment variables that have been changed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Project Repo
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/diosamuel/antileaked.io" rel="noopener noreferrer"&gt;https://github.com/diosamuel/antileaked.io&lt;/a&gt;&lt;/p&gt;

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

&lt;h3&gt;
  
  
  First Setup
&lt;/h3&gt;

&lt;p&gt;The first step is to gather all our secret keys into a 1Password vault.&lt;br&gt;
We can use either the 1Password desktop app or the CLI — in this case, I'm using the desktop app for convenience.&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%2Flefxeh8bxj9kgwq6pioo.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%2Flefxeh8bxj9kgwq6pioo.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then, copy the secret reference for each secret that have been created.&lt;br&gt;
An example of a secret reference looks like this:&lt;br&gt;
&lt;code&gt;"op://myStartup Secret Vault/mail/password"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;then, insert Secret Reference to .env&lt;br&gt;
&lt;code&gt;catherine_gmail_password=op://myStartup Secret Vault/mail/password&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next step, we must create an ESC Environment at &lt;a href="https://app.pulumi.com/" rel="noopener noreferrer"&gt;https://app.pulumi.com/&lt;/a&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.amazonaws.com%2Fuploads%2Farticles%2Fd8nrkjbuvxonsdwr2a8o.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%2Fd8nrkjbuvxonsdwr2a8o.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This step is necessary to store secret keys in Pulumi ESC, as well as to integrate with 1Password and Telegram using the Pulumi SDK.&lt;/p&gt;
&lt;h3&gt;
  
  
  Set Pulumi Slack Webhook 🪝
&lt;/h3&gt;

&lt;p&gt;Let's create a notification to Slack to monitor changes — we can leverage the Pulumi webhook to achieve this on this website.&lt;/p&gt;

&lt;p&gt;We can use the &lt;a href="https://api.slack.com/apps?new_app=1&amp;amp;manifest_yaml=display_information%3A%0A%20%20name%3A%20pulumi-slack-notifications%0A%20%20description%3A%20Funnel%20Pulumi%20webhooks%20to%20Slack%0A%20%20background_color%3A%20%22%238a3391%22%0Afeatures%3A%0A%20%20bot_user%3A%0A%20%20%20%20display_name%3A%20pulumi-slack-notifications%0A%20%20%20%20always_online%3A%20false%0Aoauth_config%3A%0A%20%20scopes%3A%0A%20%20%20%20bot%3A%0A%20%20%20%20%20%20-%20incoming-webhook%0Asettings%3A%0A%20%20org_deploy_enabled%3A%20false%0A%20%20socket_mode_enabled%3A%20false%0A%20%20token_rotation_enabled%3A%20false" rel="noopener noreferrer"&gt;Slack App Template&lt;/a&gt; provided by Pulumi. &lt;/p&gt;

&lt;p&gt;Once we’ve obtained the webhook URL, we can insert it here:&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%2F0zap2w44tjps82qj8z5m.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%2F0zap2w44tjps82qj8z5m.png" alt=" "&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://app.pulumi.com/" rel="noopener noreferrer"&gt;https://app.pulumi.com/&lt;/a&gt;/webhooks/new&lt;/p&gt;

&lt;p&gt;✅ All set! Now, every change will trigger a notification to Slack — in our case, directly to the team leader.&lt;/p&gt;
&lt;h3&gt;
  
  
  Using Pulumi ESC on-the-go
&lt;/h3&gt;

&lt;p&gt;After creating a Pulumi ESC environment, the next step is to initialize the ESC environment in our project using the &lt;a href="https://www.pulumi.com/docs/esc/download-install/" rel="noopener noreferrer"&gt;ESC CLI&lt;/a&gt; and add each environment variable into the ESC environment.&lt;/p&gt;

&lt;p&gt;Login to Pulumi ESC:&lt;br&gt;&lt;br&gt;
&lt;code&gt;esc login&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Initialize the environment:&lt;br&gt;&lt;br&gt;
&lt;code&gt;esc env init &amp;lt;account&amp;gt;/antileaked/secret&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Set 1Password &lt;br&gt;
$Env:OP_CONNECT_HOST=&lt;br&gt;
pulumi config set pulumi-onepassword:url --secret&lt;/p&gt;

&lt;p&gt;Store Catherine's password (example):&lt;br&gt;&lt;br&gt;
&lt;code&gt;esc env set &amp;lt;account&amp;gt;/antileaked/secret catherine_gmail_password op://myStartup Secret Vault/mail/password --plaintext&lt;/code&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Telegram Bot Watcher + 1Password + Pulumi
&lt;/h3&gt;

&lt;p&gt;The Telegram bot is organized according to this structure.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;├── 1password
│   └── index.js
├── node_modules/
├── pulumi
│   └── index.js
├── .env
├── index.js
├── package-lock.json
├── package.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here explained file:&lt;br&gt;
&lt;code&gt;index.js&lt;/code&gt;&lt;br&gt;
Serves as the main entry point for the Telegram bot. It leverages the powerful Telegraf.js library to handle incoming messages, monitor chat activity for potential secret leaks, and respond to specific commands. The bot is designed to integrate seamlessly with secret management and notification systems to enhance security within group chats.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;1password/index.js&lt;/code&gt;&lt;br&gt;
This module is dedicated to securely retrieving secrets from 1Password vaults using the official 1Password SDK. It provides a clean interface to access sensitive credentials based on reference paths, making it easy to integrate with other parts of the application that rely on secure, dynamic configuration.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;pulumi/index.js:&lt;/code&gt;&lt;br&gt;
This file encapsulates all logic related to interacting with Pulumi ESC (Environment and Secrets Configuration) through the @pulumi/esc-sdk. It supports reading, updating, and managing environment secrets programmatically, enabling automated secret rotation and real-time configuration updates as part of the bot’s leak prevention workflow.&lt;/p&gt;

&lt;p&gt;This has been an exciting and valuable experience—implementing Pulumi ESC and 1Password together opened up a new level of automation and security for managing secrets. I’ve learned a lot throughout this process, and I’m looking forward to exploring even more integrations in the future!🙌🙌&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>pulumichallenge</category>
      <category>webdev</category>
      <category>cloud</category>
    </item>
    <item>
      <title>🚨ReportSOS | AI-Powered SOS Emergency Caller: Enhancing Dispatcher Efficiency and Response</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Mon, 25 Nov 2024 01:56:29 +0000</pubDate>
      <link>https://dev.to/diosamuel/reportsos-enhancing-dispatcher-efficiency-and-response-52c6</link>
      <guid>https://dev.to/diosamuel/reportsos-enhancing-dispatcher-efficiency-and-response-52c6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/assemblyai"&gt;AssemblyAI Challenge &lt;/a&gt;: No More Monkey Business.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built | 🚨ReportSOS 🆘
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Help! Help! Emergency here! 🗣&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Can you imagine how hectic it must be for dispatchers to handle and interpret hundreds of emergency calls every single day? That’s why I created 🚨ReportSOS, an app designed to streamline the chaos!&lt;/p&gt;

&lt;p&gt;With 🚨ReportSOS, emergencies get sorted faster and smarter. The app lets users report incidents in just a few taps, providing crucial details like location, type of emergency, and even summaries. It’s like giving dispatchers a superpower—cutting through the noise and delivering the right help to the right place, right on time. Whether it’s a fire, an accident, or a cat stuck in a tree, 🚨ReportSOS has your back! 🆘✨&lt;/p&gt;

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

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

&lt;p&gt;&lt;a href="https://report-sos.vercel.app/" rel="noopener noreferrer"&gt;🚨ReportSOS Demo&lt;/a&gt;&lt;br&gt;
Admin page :&lt;br&gt;
&lt;a href="https://report-sos.vercel.app/admin" rel="noopener noreferrer"&gt;🚨ReportSOS Demo Admin&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Username: reportagent
Password: assemblyai
Assembly API Key: your own api key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  User Feature
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;▶Start Page&lt;/strong&gt;&lt;br&gt;
To use 🚨ReportSOS, users can either press the "Help Me" button or shake their phone vigorously until it vibrates 4 times.&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%2F6xdfdr26sfv73fev5xvw.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%2F6xdfdr26sfv73fev5xvw.png" alt="Start" width="325" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🎙Voice Recorder&lt;/strong&gt;&lt;br&gt;
Try using the microphone to report emergencies around you. You can also manually upload reports directly from your file manager.&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%2Fe4f3t8w7wkccv91f556w.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%2Fe4f3t8w7wkccv91f556w.png" alt="Voice" width="325" height="658"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🏠Location&lt;/strong&gt;&lt;br&gt;
Access to your location is necessary to determine your precise position, ensuring that emergency services or responders can reach you quickly and efficiently. &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%2Fupvfgirw3gbdxvurio25.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%2Fupvfgirw3gbdxvurio25.png" alt="Location" width="325" height="658"&gt;&lt;/a&gt;&lt;br&gt;
...And many more! Check out the full details in the video above.&lt;/p&gt;


&lt;h2&gt;
  
  
  Dispatcher and Emergency Team Feature
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;🔑Authentication Page&lt;/strong&gt;&lt;br&gt;
Includes fields for a username, password, and AssemblyAI API key.&lt;br&gt;
This page ensures secure access by verifying user credentials and API keys before granting access to the system.&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%2Fri79iyx3aqovlwnw3opk.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%2Fri79iyx3aqovlwnw3opk.png" alt="Auth" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🖥Dashboard Page&lt;/strong&gt;&lt;br&gt;
This feature includes a "Latest Emergency" section that highlights the most recent emergencies.&lt;/p&gt;

&lt;p&gt;On the right side of this section, users can find detailed information such as the location description, images, audio, a summary of the event, emergency status, casualty details, key points, and more.&lt;/p&gt;

&lt;p&gt;This layout ensures users have a clear and organized view of all critical information in one place, enabling faster understanding and response. Additionally, the section is designed to be interactive, allowing users to drill down into specific details or share reports directly.&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%2Fkj3r4mt9wxafpcz25d8o.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%2Fkj3r4mt9wxafpcz25d8o.png" alt="Dashboard" width="800" height="403"&gt;&lt;/a&gt;&lt;/p&gt;


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

&lt;p&gt;&lt;strong&gt;Frontend Code&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://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/diosamuel" rel="noopener noreferrer"&gt;
        diosamuel
      &lt;/a&gt; / &lt;a href="https://github.com/diosamuel/reportSOS" rel="noopener noreferrer"&gt;
        reportSOS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🚨ReportSOS | AI-Powered SOS Emergency Caller: Enhancing Dispatcher Efficiency and Response
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;React + Vite&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.&lt;/p&gt;

&lt;p&gt;Currently, two official plugins are available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md" rel="noopener noreferrer"&gt;@vitejs/plugin-react&lt;/a&gt; uses &lt;a href="https://babeljs.io/" rel="nofollow noopener noreferrer"&gt;Babel&lt;/a&gt; for Fast Refresh&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/vitejs/vite-plugin-react-swc" rel="noopener noreferrer"&gt;@vitejs/plugin-react-swc&lt;/a&gt; uses &lt;a href="https://swc.rs/" rel="nofollow noopener noreferrer"&gt;SWC&lt;/a&gt; for Fast Refresh&lt;/li&gt;
&lt;/ul&gt;

&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/diosamuel/reportSOS" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Backend Code&lt;/strong&gt;&lt;br&gt;

&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/diosamuel" rel="noopener noreferrer"&gt;
        diosamuel
      &lt;/a&gt; / &lt;a href="https://github.com/diosamuel/reportsos-be" rel="noopener noreferrer"&gt;
        reportsos-be
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🚨ReportSOS | AI-Powered SOS Emergency Caller: Enhancing Dispatcher Efficiency and Response
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Express API Starter&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;How to use this template:&lt;/p&gt;

&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;npx create-express-api --directory my-api-name&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Includes API Server utilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/morgan" rel="nofollow noopener noreferrer"&gt;morgan&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;HTTP request logger middleware for node.js&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/helmet" rel="nofollow noopener noreferrer"&gt;helmet&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Helmet helps you secure your Express apps by setting various HTTP headers. It's not a silver bullet, but it can help!&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/dotenv" rel="nofollow noopener noreferrer"&gt;dotenv&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Dotenv is a zero-dependency module that loads environment variables from a &lt;code&gt;.env&lt;/code&gt; file into &lt;code&gt;process.env&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/cors" rel="nofollow noopener noreferrer"&gt;cors&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;CORS is a node.js package for providing a Connect/Express middleware that can be used to enable CORS with various options.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Development utilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/nodemon" rel="nofollow noopener noreferrer"&gt;nodemon&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;nodemon is a tool that helps develop node.js based applications by automatically restarting the node application when file changes in the directory are detected.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/eslint" rel="nofollow noopener noreferrer"&gt;eslint&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;ESLint is a tool for identifying and reporting on patterns found in ECMAScript/JavaScript code.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/jest" rel="nofollow noopener noreferrer"&gt;jest&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;Jest is a delightful JavaScript Testing Framework with a focus on simplicity.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;a href="https://www.npmjs.com/package/supertest" rel="nofollow noopener noreferrer"&gt;supertest&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;HTTP assertions made easy via superagent.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Setup&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm install
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Lint&lt;/h2&gt;
&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;
&lt;pre class="notranslate"&gt;&lt;code&gt;npm run&lt;/code&gt;&lt;/pre&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/diosamuel/reportsos-be" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;API &amp;amp; Technology 💻&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;React for building a sleek and interactive frontend.

&lt;ul&gt;
&lt;li&gt;react-voice-visualizer for recording voice&lt;/li&gt;
&lt;li&gt;react-webcam for capture image&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Tailwind CSS to make styling a breeze&lt;/li&gt;

&lt;li&gt;Express.js powering the backend like a boss.&lt;/li&gt;

&lt;li&gt;Neon as our go-to database—because who doesn’t love a fast, modern DB?&lt;/li&gt;

&lt;li&gt;OpenStreetMap: Using Overpass API to find nearby emergency locations and Nominatim for reverse geocoding magic.&lt;/li&gt;

&lt;li&gt;AssemblyAI, because transcribing audio and handling LLM tasks is their superpower.&lt;/li&gt;

&lt;/ul&gt;

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

&lt;p&gt;&lt;strong&gt;How can I implement LeMUR in Assembly AI?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Firstly, I convert audio to text and use entity detection and IAB category detection to identify topics. For the example, here i using AssemblyAI Playground to test the audio.&lt;/li&gt;
&lt;/ul&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%2Fqrz4rvy1g903np0336zi.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%2Fqrz4rvy1g903np0336zi.png" alt="Playground" width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;From the transcript that already been converted before, I utilize LeMUR with a custom prompt as follows:
&lt;/li&gt;
&lt;/ul&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;"context"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"This is an emergency call for assistance."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"answer_format"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&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;"activities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"very short sentence"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&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="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"key_points"&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;"tone"&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="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
                    &lt;/span&gt;&lt;span class="nl"&gt;"casualty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&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;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Critical"&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"Urgent"&lt;/span&gt;&lt;span class="err"&gt;|&lt;/span&gt;&lt;span class="s2"&gt;"Non-Urgent"&lt;/span&gt;&lt;span class="w"&gt;
                &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&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;The custom prompt above is designed to ensure that the output stays within a JSON structure, making it easy to parse and integrate into the application.&lt;br&gt;
So here the example of output&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;"activities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Multiple vehicle accidents on I-75 in poor visibility conditions."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Caller reports a series of vehicle accidents occurring on I-75 in very low visibility conditions. At least 4 vehicles are involved, including a truck. The situation is chaotic and rapidly evolving."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"key_points"&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="s2"&gt;"Multiple accidents occurring on I-75"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"At least 4 vehicles involved, including a truck"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Very poor visibility making it hard to see"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="s2"&gt;"Situation is ongoing and chaotic"&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;"tone"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Panicked and distressed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"casualty"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Unknown number of injuries"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"status"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Critical"&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;The data is stored in a PostgreSQL database using the Neon service to avoid retrieving duplicate data, thereby saving API credits.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Feature⚡
&lt;/h3&gt;

&lt;p&gt;To complete this app and turn it into a superapp for reporting emergencies, here’s what I’ve done:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Media Integration&lt;br&gt;
This app uses both camera and voice to provide a complete report for dispatchers, ensuring that all the critical details are captured accurately. I’m using React-Webcam to enable users to capture images or videos of the emergency situation. For voice reporting, I’m using React-Voice-Visualizer to record and transcribe spoken information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Emergency Mapping&lt;br&gt;
I use React-Leaflet to display a spatial map. Additionally, I leverage the Overpass API from OpenStreetMap.org to search for nearby emergency offices, such as police stations, fire stations, and hospitals, using the following query:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[out:json][timeout:25];
  nwr["amenity"~"^(hospital|fire_station|police)$"](south, west, north, east);
  out geom;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;User Information&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After users report an emergency they are experiencing, the application will provide examples of first aid steps that can be taken immediately. It will also display the nearest emergency offices, such as hospitals, police stations, and fire stations.&lt;/p&gt;

&lt;p&gt;Thus, the 🚨ReportSOS application is equipped with comprehensive features, making it a complete solution for reporting emergency situations. 😎&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Team Member&lt;/strong&gt;&lt;br&gt;
Just me and Myself😁✌🏻&lt;/p&gt;

&lt;p&gt;Thanks for reading! It’s been an exciting experience trying out Assembly AI—a whole new venture for me. Apologies if there are any shortcomings in the app; of course, it can be developed and improved further. I hope you enjoyed exploring it as much as I did! Goodbye! 😊👋&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>assemblyaichallenge</category>
      <category>ai</category>
      <category>api</category>
    </item>
    <item>
      <title>First Post</title>
      <dc:creator>diosamuel</dc:creator>
      <pubDate>Tue, 30 Jan 2024 00:52:35 +0000</pubDate>
      <link>https://dev.to/diosamuel/first-post-1p</link>
      <guid>https://dev.to/diosamuel/first-post-1p</guid>
      <description>&lt;p&gt;Just testing my posts&lt;/p&gt;

</description>
      <category>webdev</category>
    </item>
  </channel>
</rss>
