<?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: MA10</title>
    <description>The latest articles on DEV Community by MA10 (@ma10_yt).</description>
    <link>https://dev.to/ma10_yt</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%2F4155680%2F6e5532af-c13c-4340-8322-2efe494eb297.png</url>
      <title>DEV Community: MA10</title>
      <link>https://dev.to/ma10_yt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ma10_yt"/>
    <language>en</language>
    <item>
      <title>🧾 ReceiptPocket — Your Expenses, Privately Managed</title>
      <dc:creator>MA10</dc:creator>
      <pubDate>Sat, 17 Oct 2026 16:35:05 +0000</pubDate>
      <link>https://dev.to/ma10_yt/receiptpocket-your-expenses-privately-managed-435j</link>
      <guid>https://dev.to/ma10_yt/receiptpocket-your-expenses-privately-managed-435j</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;h1&gt;
  
  
  🧾 ReceiptPocket — Your Expenses, Privately Managed
&lt;/h1&gt;

&lt;p&gt;Receipts pile up. Expense tracking becomes tedious. And using AI to automate it can mean sending sensitive financial information to a service you don't control.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;ReceiptPocket&lt;/strong&gt;, a local-first, AI-powered receipt and expense organizer that helps freelancers and small business owners turn receipt images into organized expense records.&lt;/p&gt;

&lt;p&gt;The idea is simple: upload a receipt, let AI extract the important details, review the results, and save the expense. Your receipt-processing workflow doesn't need to send your financial documents to a cloud AI service.&lt;/p&gt;

&lt;h3&gt;
  
  
  What can it do?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI-powered receipt extraction:&lt;/strong&gt; Extract merchant names, transaction dates, amounts, and expense categories from receipt images.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Local data storage:&lt;/strong&gt; Store expenses in SQLite and keep receipt images on your own computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expense dashboard:&lt;/strong&gt; View spending summaries, recent transactions, and category breakdowns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expense management:&lt;/strong&gt; Search, filter, inspect, and export saved expenses to CSV.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-currency support:&lt;/strong&gt; Preserve original receipt amounts and currencies, convert supported expenses into a chosen reporting currency, and retain exchange-rate information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Manual entry:&lt;/strong&gt; Add expenses manually when OCR or AI extraction needs help.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who would pay for it?
&lt;/h3&gt;

&lt;p&gt;I built ReceiptPocket with freelancers, independent professionals, and small business owners in mind. These users often need to organize expenses without necessarily needing a complicated accounting platform.&lt;/p&gt;

&lt;p&gt;A potential business model could be a low-cost one-time license, optional paid setup, or ongoing support for people who prefer managing their financial records locally instead of depending on a cloud service.&lt;/p&gt;

&lt;p&gt;I haven't yet validated willingness to pay with a paying customer. The next step is to get ReceiptPocket into the hands of real users, learn what they need, and see whether it genuinely saves them time.&lt;/p&gt;

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

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

&lt;p&gt;🎥 &lt;strong&gt;Watch ReceiptPocket in action&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=yUI-Vk_pJSU" rel="noopener noreferrer"&gt;Watch the ReceiptPocket demo on YouTube&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this walkthrough, I demonstrate ReceiptPocket's local AI receipt extraction, expense saving, and expense management workflow.&lt;/p&gt;

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

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

&lt;p&gt;💻 &lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/ma10-yt/ReceiptPocket" rel="noopener noreferrer"&gt;ma10-yt/ReceiptPocket&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The repository contains the Python application, dependencies, setup instructions, configuration, and MIT License.&lt;/p&gt;

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

&lt;p&gt;ReceiptPocket is built with Python and Streamlit. I wanted to keep it straightforward enough to run locally without building an entire cloud backend.&lt;/p&gt;

&lt;p&gt;The technology stack:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tesseract OCR&lt;/strong&gt; reads the text on receipt images locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Qwen2.5 1.5B Instruct&lt;/strong&gt;, an open-weight language model, runs locally through &lt;strong&gt;Ollama&lt;/strong&gt; to turn OCR text into structured expense details.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SQLite&lt;/strong&gt; stores expense records on the user's computer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Babel&lt;/strong&gt; handles locale-aware currency formatting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Frankfurter&lt;/strong&gt; supplies exchange-rate reference data when currency conversion is needed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The receipt-processing workflow looks like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Upload a receipt image.&lt;/li&gt;
&lt;li&gt;Extract its text using local OCR.&lt;/li&gt;
&lt;li&gt;Pass the extracted text to the locally running Qwen model.&lt;/li&gt;
&lt;li&gt;Parse the response into structured expense details.&lt;/li&gt;
&lt;li&gt;Let the user review and correct the values.&lt;/li&gt;
&lt;li&gt;Save the confirmed expense to SQLite.&lt;/li&gt;
&lt;li&gt;View, search, filter, and export the saved record.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also implemented manual-entry fallbacks, expense history, multi-currency support, and safeguards around currency conversion and database migrations.&lt;/p&gt;

&lt;p&gt;I used &lt;strong&gt;GitHub Copilot in VS Code&lt;/strong&gt; to help build, debug, and refine the application. During development, I worked through practical issues involving Windows OCR configuration, Streamlit reruns, reliable expense persistence, and SQLite locking during currency migration.&lt;/p&gt;

&lt;p&gt;Testing the application taught me that getting an AI model to return a response is only one part of building a useful product. The application around it still needs validation, error handling, reliable storage, and safeguards against incorrect AI output.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;The central idea behind ReceiptPocket is that automating expense tracking shouldn't require handing your receipts to a cloud AI provider.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Receipts reveal personal purchases and business activity. For freelancers and small business owners, expense records can also contain sensitive commercial information.&lt;/p&gt;

&lt;p&gt;ReceiptPocket uses Tesseract and a locally running Qwen model instead of a hosted AI API for receipt processing. The receipt image, OCR text, AI extraction, and expense database stay on the user's computer.&lt;/p&gt;

&lt;p&gt;Open-weight models give developers flexibility, too. I can experiment with different local models, assess extraction quality on different receipt layouts, and potentially adapt the workflow without making every request dependent on a particular provider's pricing or API availability.&lt;/p&gt;

&lt;p&gt;There is also a practical cost consideration. Once the application and model are installed, local inference avoids per-request charges from a hosted AI inference service, although it still uses the computer's processing power, memory, and electricity.&lt;/p&gt;

&lt;p&gt;This approach has trade-offs. A small language model can misread blurry receipts, miss information, or confuse currency symbols. That's why ReceiptPocket lets users review and correct extracted details instead of blindly trusting the model.&lt;/p&gt;

&lt;p&gt;The core OCR and AI workflow can operate offline after setup. Initial installation and model downloads require internet access, and obtaining fresh exchange rates can also require a connection. When requesting an exchange rate, the application needs currency-pair and date information; it doesn't need to upload the receipt or merchant details.&lt;/p&gt;

&lt;p&gt;For me, open innovation is about giving developers and users greater control over their software, their data, and the technology they choose to build with.&lt;/p&gt;

&lt;p&gt;ReceiptPocket is my attempt to apply that idea to a small but practical problem.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Best Use of GitHub Copilot — $100
&lt;/h3&gt;

&lt;p&gt;I used GitHub Copilot in VS Code to help develop and debug ReceiptPocket, refine application code, and work through implementation issues.&lt;/p&gt;

&lt;p&gt;This project gave me an opportunity to use AI-assisted development to build something functional, test the results, and iterate on the code rather than stopping at a prototype.&lt;/p&gt;

&lt;p&gt;I'm entering this category based on my use of GitHub Copilot during development.&lt;/p&gt;




&lt;p&gt;Thanks for checking out ReceiptPocket! If you're a freelancer or small business owner who deals with receipts regularly, I'd love to hear what you would want from a local-first expense manager.&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>Touch Grass 🌳: An AI Scavenger Hunt That Gets You Outside</title>
      <dc:creator>MA10</dc:creator>
      <pubDate>Sun, 11 Oct 2026 07:20:45 +0000</pubDate>
      <link>https://dev.to/ma10_yt/touch-grass-an-ai-scavenger-hunt-that-gets-you-outside-45oi</link>
      <guid>https://dev.to/ma10_yt/touch-grass-an-ai-scavenger-hunt-that-gets-you-outside-45oi</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;What if AI gave you a reason to put down your phone and actually go outside?&lt;/p&gt;

&lt;p&gt;That's the idea behind &lt;strong&gt;Touch Grass&lt;/strong&gt;, an AI-powered outdoor scavenger hunt that turns your real surroundings into a game.&lt;/p&gt;

&lt;p&gt;Instead of giving every player the same fixed list of objectives, Touch Grass uses the player's location and nearby geographic information to generate five objects to find. A player exploring a park might receive different targets from someone exploring a busy residential or commercial area.&lt;/p&gt;

&lt;p&gt;Here's how a game works:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create a game or join your friends using a game code.&lt;/li&gt;
&lt;li&gt;Allow location access so the game can understand your surroundings.&lt;/li&gt;
&lt;li&gt;Receive five scavenger-hunt targets generated with the help of Gemma and local geographic context.&lt;/li&gt;
&lt;li&gt;Head outside, explore, and find the objects.&lt;/li&gt;
&lt;li&gt;Take a photo using the in-game camera.&lt;/li&gt;
&lt;li&gt;Let the YOLO object-detection model verify the photo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first player to verify all five targets wins!&lt;/p&gt;

&lt;p&gt;There's also multiplayer gameplay, collaborative target replacement, location-context refreshes as players explore, and optional step-count and distance statistics.&lt;/p&gt;

&lt;p&gt;One important design decision was to restrict targets to classes supported by the actual YOLO detector. There's no point asking players to find an object the verification model cannot recognize.&lt;/p&gt;

&lt;p&gt;The goal is simple: &lt;strong&gt;make the screen the shortest part of the experience.&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;🚀 &lt;strong&gt;Try Touch Grass here:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://touch-grass-api-uwhz.onrender.com/" rel="noopener noreferrer"&gt;https://touch-grass-api-uwhz.onrender.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The application is deployed on Render. Open it on your phone, grant location and camera permissions, and try creating a game.&lt;/p&gt;

&lt;p&gt;The first visit may take a little time because the free hosting service can spin down when idle. For the best experience, use the deployed HTTPS link so the browser can access the camera and location APIs.&lt;/p&gt;

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

&lt;p&gt;💻 &lt;strong&gt;GitHub repository:&lt;/strong&gt; &lt;a href="https://github.com/ma10-yt/touch-grass" rel="noopener noreferrer"&gt;ma10-yt/touch-grass&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The source code includes the FastAPI backend, frontend, AI target generator, geographic context service, YOLO verification pipeline, MongoDB integration, and automated tests.&lt;/p&gt;

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

&lt;p&gt;My main goal was to make AI an actual part of the gameplay rather than simply adding a chatbot to an application.&lt;/p&gt;

&lt;p&gt;The project uses:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Python and FastAPI&lt;/strong&gt; for the backend and game APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTML, CSS, and JavaScript&lt;/strong&gt; for the frontend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MongoDB Atlas&lt;/strong&gt; for persistent game and multiplayer state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenStreetMap, Nominatim, and Overpass&lt;/strong&gt; for locality and nearby-feature context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gemma&lt;/strong&gt; for AI-generated targets and hints.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ollama&lt;/strong&gt; for local language-model inference during development.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cloudflare Workers AI&lt;/strong&gt; for production Gemma inference.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;YOLOv8n with ONNX Runtime&lt;/strong&gt; for server-side photo verification.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Render&lt;/strong&gt; to host the deployed application.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Copilot in VS Code&lt;/strong&gt; to help me write code, debug issues, and iterate on the implementation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The journey from local Gemma to Cloudflare
&lt;/h3&gt;

&lt;p&gt;One of the most interesting parts of this project was figuring out how to run the language model reliably after deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First, I used Ollama with Gemma 3 1B locally.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I downloaded the model and ran it through Ollama on my own computer. This let me experiment with prompts and build the initial target-generation flow without depending on a hosted inference provider.&lt;/p&gt;

&lt;p&gt;However, my production application runs on Render. The Ollama model running on my laptop wasn't automatically available to that remote server. I needed a way to run inference remotely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next, I tried OpenRouter.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It gave me access to a hosted Gemma model, so I could connect the deployed backend to a remote inference API. But I ran into free-model rate limits and provider-capacity errors. A game should not become unusable just because a model provider is temporarily unavailable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally, I integrated Cloudflare Workers AI.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I switched production inference to Google's Gemma 4 26B A4B Instruct model:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@cf/google/gemma-4-26b-a4b-it&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;I tested the REST API, handled the model's response format, disabled thinking mode to avoid wasting the output-token budget on reasoning, and integrated the model into the existing backend.&lt;/p&gt;

&lt;p&gt;I also added handling for quota exhaustion, invalid credentials, temporary rate limits, malformed output, and other provider failures. When generation is unavailable, the backend can select eligible targets through its location-ranked fallback rather than blindly relying on a fixed demo list.&lt;/p&gt;

&lt;p&gt;The final architecture keeps the AI provider separate from the game logic. Ollama remains useful for local development, while the deployed application can use Cloudflare for remote inference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Making location actually matter
&lt;/h3&gt;

&lt;p&gt;Getting a model to return five objects was only the beginning. The targets needed to make sense for the player's surroundings.&lt;/p&gt;

&lt;p&gt;I integrated OpenStreetMap context into the generation pipeline. The backend retrieves nearby geographic features, classifies the surrounding area, ranks eligible object classes, and includes that context in the model prompt.&lt;/p&gt;

&lt;p&gt;During testing, I discovered that map requests could time out and push the generator into a generic-context fallback. Caching could also reuse context for nearby locations. I improved the request timeout, retry behaviour, cache precision, and diagnostic logging to make it easier to distinguish actual location-aware generation from generic fallback behaviour.&lt;/p&gt;

&lt;p&gt;I also addressed repetitive target generation and a target-replacement bug. The replacement logic now excludes the class being replaced, so the game doesn't simply offer the same object again.&lt;/p&gt;

&lt;p&gt;The backend test suite most recently passed &lt;strong&gt;157 tests, with 2 skipped&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;These problems taught me that getting a successful LLM response isn't the same as building a reliable AI feature. Geographic data quality, candidate selection, validation, retry behaviour, and application state all matter.&lt;/p&gt;

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

&lt;p&gt;For Touch Grass, open innovation mattered because I wanted control over how the AI fits into the application.&lt;/p&gt;

&lt;p&gt;Using an open-weight model such as Gemma meant I could start locally with Ollama, experiment with prompts, and then move to a hosted inference provider when I needed to deploy the application. I didn't need to redesign the entire game around one provider.&lt;/p&gt;

&lt;p&gt;That flexibility was valuable when OpenRouter's free-model limits became a problem. I could test another way of serving Gemma while keeping the same core target-generation and validation logic.&lt;/p&gt;

&lt;p&gt;Open innovation also matters for the computer-vision side. The game doesn't blindly trust whatever the language model suggests. The backend constrains target classes, validates generated responses, and uses an actual object detector to check submitted photographs.&lt;/p&gt;

&lt;p&gt;There is an important trade-off: &lt;strong&gt;production Gemma inference is hosted through Cloudflare, so the deployed application is not an entirely local or offline AI system.&lt;/strong&gt; The local Ollama setup remains available for development, while production benefits from managed inference. The target-generation prompt and coarse geographic context are sent to Cloudflare, but camera photographs are processed by the application's backend for YOLO verification rather than being sent to the Gemma API.&lt;/p&gt;

&lt;p&gt;I also learned that using an open-weight model doesn't automatically make an application reliable or private. The surrounding architecture, the data sent to each service, and the way failures are handled matter just as much.&lt;/p&gt;

&lt;p&gt;For me, open innovation meant being able to experiment, change deployment strategies, inspect and improve the application logic, and keep the project adaptable rather than being locked into one AI provider.&lt;/p&gt;

&lt;p&gt;And most importantly, it helped me build something where AI encourages people to interact with the world instead of spending more time staring at a screen.&lt;/p&gt;

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

&lt;p&gt;I used &lt;strong&gt;GitHub Copilot in VS Code&lt;/strong&gt; throughout development to help write code, investigate bugs, and refine the implementation.&lt;/p&gt;

&lt;p&gt;I haven't included a DevRelay session link in this submission, but the project source and commit history are available in the &lt;a href="https://github.com/ma10-yt/touch-grass" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;I'm entering the following categories based on the technologies used in Touch Grass:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Gemma ($200):&lt;/strong&gt; Gemma generates contextual scavenger-hunt targets and hints. I experimented with local Gemma inference through Ollama before deploying a hosted Gemma model through Cloudflare Workers AI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render ($200):&lt;/strong&gt; Render hosts the deployed FastAPI application and frontend, making the game accessible through a public live demo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of MongoDB Atlas ($100):&lt;/strong&gt; MongoDB Atlas provides persistent storage for the game's state and multiplayer sessions behind an application built around an open-weight model.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of GitHub Copilot ($100):&lt;/strong&gt; I used GitHub Copilot in VS Code extensively while writing and debugging the project and iterating on implementation and tests.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to the DEV team and the Hacktoberfest partners for organizing this challenge. Building Touch Grass pushed me to work through real deployment and AI-integration problems, not just get a prototype running locally.&lt;/p&gt;

&lt;p&gt;Now it's time to close the editor and touch some grass. 🌳🎮&lt;/p&gt;

&lt;h1&gt;
  
  
  devchallenge #hf26challenge
&lt;/h1&gt;

</description>
      <category>devchallenge</category>
      <category>hf26challenge</category>
    </item>
    <item>
      <title>I Built an AI Recipe Generator for My Sister 🍳[Hacktoberfest Weekend Challenge: Build for a Friend]</title>
      <dc:creator>MA10</dc:creator>
      <pubDate>Fri, 02 Oct 2026 14:39:57 +0000</pubDate>
      <link>https://dev.to/ma10_yt/i-built-an-ai-recipe-generator-for-my-sister-hacktoberfest-weekend-challenge-build-for-a-friend-3g2m</link>
      <guid>https://dev.to/ma10_yt/i-built-an-ai-recipe-generator-for-my-sister-hacktoberfest-weekend-challenge-build-for-a-friend-3g2m</guid>
      <description>&lt;p&gt;&lt;strong&gt;This is a submission for the &lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Hacktoberfest Weekend Challenge: Build for a Friend&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

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

&lt;p&gt;I built an AI Recipe Generator for my sister, who loves cooking but often has trouble finding recipes that match the ingredients she actually has at home.&lt;/p&gt;

&lt;p&gt;Her usual process was to search YouTube for a recipe, open a video that looked good, and then discover that it required ingredients she didn't have. Even when she found a recipe she could make, the instructions were sometimes unclear or the recipe simply wasn't what she was looking for.&lt;/p&gt;

&lt;p&gt;So I built something that starts with &lt;strong&gt;what she already has&lt;/strong&gt;, instead of making her search through recipes first.&lt;/p&gt;

&lt;p&gt;She can either type in her ingredients or upload a photo of them. The AI then suggests five recipes she could make. She chooses one, and the app generates the complete recipe with ingredients, preparation and step-by-step cooking instructions.&lt;/p&gt;

&lt;p&gt;It also lets her specify dietary preferences, cuisine, number of servings, and maximum cooking time.&lt;/p&gt;

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

&lt;p&gt;🌐 &lt;strong&gt;&lt;a href="https://ai-recipe-gen-pddb.onrender.com/" rel="noopener noreferrer"&gt;Try the live app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The app is deployed on Render and can be used directly in the browser.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/ma10-yt/ai-recipe-gen" rel="noopener noreferrer"&gt;AI Recipe Generator&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The project is built with Python and Streamlit, with the AI functionality handled through Backboard and Kimi K2.6.&lt;/p&gt;

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

&lt;p&gt;I built the application with &lt;strong&gt;Python and Streamlit&lt;/strong&gt; and used &lt;strong&gt;Kimi K2.6&lt;/strong&gt;, an open-weight model, through Backboard and OpenRouter.&lt;/p&gt;

&lt;p&gt;The project has two main AI steps.&lt;/p&gt;

&lt;p&gt;First, the user provides ingredients either as text, an uploaded image, or both. When an image is uploaded, Kimi analyzes the image to identify the visible ingredients. The application then asks the model for five recipe suggestions rather than immediately generating a long recipe.&lt;/p&gt;

&lt;p&gt;Second, the user selects the recipe they want. The application sends that selection back to the AI and generates the complete recipe, including ingredients, timings, substitutions, cooking tips, and step-by-step instructions.&lt;/p&gt;

&lt;p&gt;I deployed the application on &lt;strong&gt;Render&lt;/strong&gt;, and used environment variables to keep the Backboard API key out of the source code.&lt;/p&gt;

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

&lt;p&gt;The open-weight model was important because the project is built around an AI model that can understand both text and images while still being part of an open-weight ecosystem.&lt;/p&gt;

&lt;p&gt;That gave me the flexibility to build the application around the model rather than tying the entire project to one closed AI provider. It also makes it easier to experiment with different open-weight models and providers through the same architecture.&lt;/p&gt;

&lt;p&gt;For this project, that flexibility was especially useful because image understanding is a core part of the experience: my sister can simply take a photo of what she has instead of manually listing every ingredient.&lt;/p&gt;

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

&lt;p&gt;I did not use DevRelay for this project.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Render&lt;/strong&gt; — The application is deployed and publicly hosted on Render.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Best Use of Backboard&lt;/strong&gt; — Backboard is used as the AI interface for the open-weight model powering the application.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Built for my sister ❤️&lt;/p&gt;

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