<?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: Raheel Nazir</title>
    <description>The latest articles on DEV Community by Raheel Nazir (@raheelnaziir).</description>
    <link>https://dev.to/raheelnaziir</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%2F4079876%2F56084061-107e-4334-a80e-b2c754a2f7d9.png</url>
      <title>DEV Community: Raheel Nazir</title>
      <link>https://dev.to/raheelnaziir</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/raheelnaziir"/>
    <language>en</language>
    <item>
      <title>ImpactSync: Transforming Unstructured Relief Notes into Operational Intelligence</title>
      <dc:creator>Raheel Nazir</dc:creator>
      <pubDate>Sun, 06 Sep 2026 12:13:17 +0000</pubDate>
      <link>https://dev.to/raheelnaziir/impactsync-transforming-unstructured-relief-notes-into-operational-intelligence-3gb5</link>
      <guid>https://dev.to/raheelnaziir/impactsync-transforming-unstructured-relief-notes-into-operational-intelligence-3gb5</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for &lt;a href="https://dev.to/challenges/weekend-2026-09-03"&gt;Weekend Challenge: Generosity Edition&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;During humanitarian crises, natural disasters, and grassroots mutual-aid initiatives, the most critical resource is human attention. Frontline workers and community volunteers regularly spend 10 to 14 consecutive hours managing field clinics, loading and distributing food supplies, and securing emergency shelter for displaced families.&lt;/p&gt;

&lt;p&gt;When their shifts finally conclude, an administrative bottleneck begins. Nonprofits survive on transparency and rapid communication, requiring relief teams to manually generate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Urgent supply deficiency lists&lt;/strong&gt; to inform warehouse logistics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Formal donor accountability memos&lt;/strong&gt; to validate grant spending and unlock funding tranches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public mobilization requests&lt;/strong&gt; to bring in community drivers, physical aid, and off-shift volunteers.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Drafting these documents while physically and emotionally depleted leads to communication lag, overlooked resource deficits, and volunteer burnout.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ImpactSync&lt;/strong&gt; is an operational intelligence engine engineered to eliminate this administrative friction. &lt;/p&gt;

&lt;p&gt;Instead of requiring volunteers to navigate complex software forms or ERP systems on small mobile screens, ImpactSync accepts raw, unstructured notes. A volunteer can type or dictate an informal stream-of-consciousness brain dump (e.g., raw text messages, radio call logs, or fragmented updates typed in the rain). ImpactSync ingests this unstructured input and converts it into three deterministic, synchronized outputs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Deterministic Resource Extraction:&lt;/strong&gt; Identifies and isolates immediate operational deficits (medical supplies, clean bedding, heavy vehicles, volunteer roles) into categorized priority badges.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Institutional Donor Briefs:&lt;/strong&gt; Synthesizes qualitative field activities, logistical barriers, and throughput volume into formal, compassionate reports structured for philanthropic committees and grant auditors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public Community Mobilization Feeds:&lt;/strong&gt; Compiles short-form, platform-tailored announcements (formatted for X and Instagram) complete with exact timings, drop-off needs, and targeted hashtags.&lt;/li&gt;
&lt;/ol&gt;

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


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://impactsync.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;impactsync.vercel.app&lt;/span&gt;
          

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


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

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/raheelnaziir" rel="noopener noreferrer"&gt;
        raheelnaziir
      &lt;/a&gt; / &lt;a href="https://github.com/raheelnaziir/ImpactSync" rel="noopener noreferrer"&gt;
        ImpactSync
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Operational intelligence engine that converts unstructured humanitarian field notes into structured resource deficit tags, formal donor accountability reports, and community broadcasts.  
    &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;ImpactSync&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;ImpactSync is an operational intelligence engine designed for frontline humanitarian volunteers, mutual-aid networks, and grassroots non-profit organizations.&lt;/p&gt;
&lt;p&gt;During emergency responses, field teams often face acute reporting overhead after demanding operational shifts. ImpactSync ingests unstructured, informal field notes and processes them through Google Gemini to generate structured resource extraction tags, formal donor accountability reports, and community-directed mobilization updates.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Architectural Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;ImpactSync is built as a lightweight client-server application that enforces strict schema determinism over large language model outputs.&lt;/p&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://github.com/raheelnaziir/ImpactSync/public/architecture.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fraheelnaziir%2FImpactSync%2FHEAD%2Fpublic%2Farchitecture.svg" alt="ImpactSync Architecture" width="100%"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Core Pipeline Functions&lt;/h3&gt;
&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Entity Extraction:&lt;/strong&gt; Parses unstructured natural language to identify critical supply depletion and human resource requirements, mapping them into categorized tags.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Donor Accountability Reporting:&lt;/strong&gt; Synthesizes qualitative field activities, constraints, and throughput metrics into structured updates suitable for institutional donors and grant committees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Public Mobilization Dispatch:&lt;/strong&gt; Compiles short-form announcements containing actionable logistical details for community coordination channels.&lt;/li&gt;
&lt;/ol&gt;




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

&lt;/div&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;Runtime:&lt;/strong&gt; Node.js (ES Modules)&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Backend Framework:&lt;/strong&gt; Express.js&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Model Engine:&lt;/strong&gt; Google Gemini 3.6…&lt;/li&gt;

&lt;/ul&gt;&lt;/div&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/raheelnaziir/ImpactSync" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


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

&lt;p&gt;ImpactSync is built to take messy field notes from volunteers and turn them into clean, reliable outputs without crashes or formatting bugs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How the System Works:&lt;/strong&gt;&lt;br&gt;
The application follows a simple, direct process:&lt;/p&gt;

&lt;p&gt;User Input: A volunteer pastes their raw notes (from WhatsApp, text messages, or quick voice notes) into the input box.&lt;/p&gt;

&lt;p&gt;Backend API: An Express.js server receives the text through a POST /api/synthesize route.&lt;/p&gt;

&lt;p&gt;Google Gemini Processing: The server sends the text to the gemini-3.6-flash model using the @google/genai SDK.&lt;/p&gt;

&lt;p&gt;Structured Output: Instead of messy text, Gemini is forced to return strict JSON data containing three distinct fields: needs, donor email, and social media post.&lt;/p&gt;

&lt;p&gt;Instant UI Update: The frontend receives the clean data and immediately displays the tags and text cards.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using Strict JSON Schemas with Gemini:&lt;/strong&gt;&lt;br&gt;
A common issue when working with AI models is that they often return extra markdown code blocks or invalid JSON syntax that breaks the web page.&lt;/p&gt;

&lt;p&gt;To solve this, ImpactSync uses the Structured Outputs feature (responseSchema) from the @google/genai library. This forces the model to follow an exact architecture blueprint:&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%2Fkzdik0rmfkzmrz0as3ru.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%2Fkzdik0rmfkzmrz0as3ru.PNG" alt=" " width="799" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Handling Network Spikes and Errors:&lt;/strong&gt;&lt;br&gt;
During high-traffic moments or brief network hiccups, AI APIs can return temporary errors (like 503 Service Unavailable).&lt;/p&gt;

&lt;p&gt;To make sure field volunteers never lose their notes, the backend includes an automatic retry loop:&lt;/p&gt;

&lt;p&gt;If a temporary error occurs, the server waits two seconds.&lt;/p&gt;

&lt;p&gt;It retries the request automatically up to three times before giving up.&lt;/p&gt;

&lt;p&gt;If a model name is wrong or outdated, it automatically lists the working models in the console for quick fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;User Interface Design:&lt;/strong&gt;&lt;br&gt;
The interface was designed to be clear, responsive, and easy on the eyes:&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%2F7uj0e2f8jhssu0usgnau.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%2F7uj0e2f8jhssu0usgnau.PNG" alt=" " width="799" height="356"&gt;&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9m76y946bei78zakm4uj.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%2F9m76y946bei78zakm4uj.PNG" alt=" " width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Dark Theme: Built using Tailwind CSS with an obsidian dark background (#08090d) and glowing borders, which saves battery life on mobile devices and looks sharp.&lt;/p&gt;

&lt;p&gt;Geist Typography: Uses the clean Geist and Geist Mono fonts for high readability when scanning item lists and numbers.&lt;/p&gt;

&lt;p&gt;Single-Page Switcher: Users can easily toggle between the product overview page and the live workspace console with one click.&lt;/p&gt;

&lt;p&gt;Smooth Copy Buttons: Replaced annoying browser popup alerts with a clean, inline ✓ Copied! confirmation right on the button.&lt;/p&gt;

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

&lt;p&gt;ImpactSync is built exclusively around the Google Gemini API (gemini-3.6-flash) using the @google/genai library.&lt;/p&gt;

&lt;p&gt;Humanitarian field reports present unique computational challenges: they are often emotionally heavy, technically fragmented, grammatically loose, and filled with local context. Gemini's advanced semantic comprehension extracts logistical facts while filtering noise, maintaining the operational urgency required for community mobilization and the decorum expected by institutional sponsors. By pairing Gemini's natural language processing with strict native JSON schemas, ImpactSync transforms complex AI reasoning into reliable, production-ready operational software.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acknowledgements
&lt;/h3&gt;

&lt;p&gt;This project was developed solo by me (Raheel Nazir ) for the DEV Weekend Challenge: Generosity Edition. Thank you to DEV and the challenge partners for hosting this opportunity!&lt;/p&gt;

&lt;h3&gt;
  
  
  The Spirit of Generosity
&lt;/h3&gt;

&lt;p&gt;Generosity is often measured in financial donations, but for grassroots organizers and mutual-aid groups, the most precious gift is time and operational relief. By transferring hours of late-night reporting burdens to an automated pipeline, ImpactSync allows volunteers to dedicate their energy to what truly matters: supporting communities in need.&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>weekendchallenge</category>
    </item>
    <item>
      <title>Good Boy Dossier: I Made Gemini Write Detective Case Files for Dogs</title>
      <dc:creator>Raheel Nazir</dc:creator>
      <pubDate>Sun, 16 Aug 2026 09:08:55 +0000</pubDate>
      <link>https://dev.to/raheelnaziir/good-boy-dossier-i-made-gemini-write-detective-case-files-for-dogs-3p6g</link>
      <guid>https://dev.to/raheelnaziir/good-boy-dossier-i-made-gemini-write-detective-case-files-for-dogs-3p6g</guid>
      <description>&lt;p&gt;This is a submission for [Weekend Challenge: Dog Days Edition] &lt;a href="https://dev.to/devteam/join-our-dev-weekend-challenge-dog-days-edition-1000-in-prizes-across-five-winners-submissions-1g4i"&gt;https://dev.to/devteam/join-our-dev-weekend-challenge-dog-days-edition-1000-in-prizes-across-five-winners-submissions-1g4i&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Good Boy Dossier turns a photo of your dog into a fully-generated "detective case file" a noir-style dossier written by AI. Upload a photo, and it produces a codename, an invented backstory, a deadpan "mood read," a confession of imagined mischief, an Instagram bio written in the dog's own voice, and a "Good Boy Score" with a witty rationale.&lt;/p&gt;

&lt;p&gt;Breed identifiers felt like the obvious angle for a dog-themed challenge, so I wanted to build something that treats the photo as a jumping-off point for a story instead of a classification problem. The goal was less "what breed is this" and more "what's this dog's deal" something genuinely fun to share, not just informative.&lt;/p&gt;

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

&lt;p&gt;🔗 Live app: &lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://goodboydossier.vercel.app/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;goodboydossier.vercel.app&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1cir2d14mwdav6zg3ufn.gif" 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%2F1cir2d14mwdav6zg3ufn.gif" alt=" " width="720" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/raheelnaziir" rel="noopener noreferrer"&gt;
        raheelnaziir
      &lt;/a&gt; / &lt;a href="https://github.com/raheelnaziir/GoodBoyDossier" rel="noopener noreferrer"&gt;
        GoodBoyDossier
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;🕵️ Good Boy Dossier&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Upload a photo of your dog. Get back a noir detective case file.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Good Boy Dossier hands your pet's photo to Google Gemini, which opens an official
file on them: a codename, an invented case history, a deadpan read on their
current expression, a confession to recent crimes, a bio in their own voice, and
a legally meaningless &lt;strong&gt;Good Boy Score&lt;/strong&gt; out of 100.&lt;/p&gt;
&lt;p&gt;Then you download the whole thing as a shareable card.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Case No. GBD-4417-K9 — THE VELVET SNOOT&lt;/strong&gt;
&lt;em&gt;"One left slipper, relocated under the sofa at 0400 hours. The subject
maintains the slipper walked there on its own."&lt;/em&gt;
&lt;strong&gt;Good Boy Score: 87 / 100&lt;/strong&gt; — Would be a clean ninety if the mud on that left
paw matched the mud in the hallway.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why this exists&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Built for &lt;strong&gt;DEV's Weekend Challenge: "Dog Days"&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;The brief was dogs, and the interesting constraint in…&lt;/p&gt;&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/raheelnaziir/GoodBoyDossier" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


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

&lt;p&gt;The app is a Next.js 14 + TypeScript + Tailwind project, fully client-driven with a single server-side API route.&lt;/p&gt;

&lt;p&gt;When a photo is uploaded, it's sent to an API route that calls Google's Gemini API with a multimodal prompt the image plus instructions to return structured JSON (codename, backstory, mood read, confession, bio, score, and rationale). Gemini's vision capabilities do the actual "reading" of the photo, and its generation handles the creative writing for each field, which is really the core of the app the personality of the output depends entirely on Gemini actually looking at the image and reacting to it, not a canned template.&lt;/p&gt;

&lt;p&gt;A few decisions worth calling out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I asked Gemini for strict JSON back so I could render it into a designed card instead of dumping raw text this meant handling occasional malformed responses (stripping markdown fences, retrying once) so the app doesn't break on an off-format reply.&lt;/li&gt;
&lt;li&gt;The result renders as a shareable "case file" graphic (photo + typed dossier styled like a redacted government file), downloadable as a PNG I wanted the output to be something people would actually want to post, not just read once and close the tab.&lt;/li&gt;
&lt;li&gt;Kept it fully client-session based, no database the app doesn't need to remember anything between visits.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Submitting for &lt;strong&gt;Best Use of Google AI&lt;/strong&gt; Gemini isn't a bolted-on feature here, it's the entire product: the multimodal read of the photo and the generated writing are what the app actually is.&lt;/p&gt;

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