تصور کنید تنها با یک عکس از قفسه آشپزخانه، یک لیست حرفهای از اقلام اهدایی و یک دستور پخت خانگی داشته باشید. این هسته اصلی PantryBridge است؛ ابزاری که برای چالش DEV Weekend (نسخه سخاوتمندی) طراحی شده تا فاصله میان «داشتن غذای اضافی» و «رساندن آن به نیازمندان» را پر کند. این ابزار از هوش مصنوعی چندوجهی استفاده میکند تا شکاف موجود بین داشتن منابع و تحویل واقعی آنها را از بین ببرد.
اهدای غذا معمولاً با فهرستبرداری دستی خستهکننده و تردید درباره مکان تحویل همراه است. بسیاری از مردم تمایل به کمک دارند، اما در لجستیک سازماندهی اقلام یا شناخت نیازهای واقعی بانکهای غذایی دچار مشکل میشوند. PantryBridge با خودکارسازی کسالتبارترین بخشهای این مسیر، یعنی شمارش، برچسبگذاری و جستوجو، این مشکل را حل میکند.
زمینه پروژه
این پروژه برای زیرمجموعه «بهترین استفاده از هوش مصنوعی گوگل» ساخته شده و به عنوان یک ابزار کمک متقابل (Mutual-aid toolkit) تعریف میشود. هدف این بود ابزاری ساخته شود که به جای شعار دادن درباره سخاوتمندی، با تسهیل انتقال از وضعیت «من غذای اضافی دارم» به «من در حال اهدای غذا هستم»، کاربردی و مفید احساس شود.
برای اینکه اپلیکیشن برای تستهای فوری در دسترس باشد، توسعهدهنده سه نمونه پیشفرض از اقلام اهدایی (Sample Hauls) را با قابلیت کلیک یکباره قرار داده است. این ویژگی به کاربران اجازه میدهد حتی اگر عکسی از قفسه آشپزخانه خود ندارند، جریان کامل کاری برنامه را تجربه کنند. این نمونهها بهصورت مستقیم به تحلیلهای شبیهسازی شدهی دستنویس ختم میشوند تا از ارسال درخواستهای رفت و برگشتی به مدل جلوگیری شده و مسیر دمو سریع و سازگار باشد.
طبق مستندات این پروژه در وبسایت dev.to، این اپلیکیشن از یک گردشکار پنج مرحلهای برای سادهسازی تجربه اهدا پیروی میکند.
جزئیات فنی
بر اساس بررسی فنی این ابزار، مراحل عملیاتی به شرح زیر است:
- اسکن چندوجهی: کاربر عکسی آپلود میکند و مدل Gemini 1.5 Flash — مدلی چندوجهی (Multimodal) که شبیه ما همزمان متن و عکس را میفهمد — تصویر را تحلیل کرده و یک موجودی ساختاریافته برمیگرداند. این خروجی شامل نام کالا، دستهبندی، مقدار تخمینی، برچسبهای رژیمی، میزان فوریت و وضعیت بستهبندی است.
- بازبینی موجودی: برنامه جدولی تمیز از آمارهای آمادگی برای اهدا و نکات خاص برای داوطلبان را نمایش میدهد که دقیقاً برای همان محموله تولید شدهاند. کاربران کنترل کامل دارند و میتوانند اقلام را بر اساس نیاز حذف یا اضافه کنند.
- تطبیق مکان: ابزار با استفاده از یک API واقعی Geocode برای کد پستی، شهر و ایالت کاربر را تایید میکند. سپس کاربر را مستقیماً به مکانیاب بانکهای غذایی Feeding America متصل میکند تا اطمینان حاصل شود که کاربران مکانهای واقعی را پیدا میکنند و نه مکانهای فرضی.
- تولید محتوای خلاق: مدل Gemini بر اساس مواد اساسی اهدایی، یک دستور پخت کوتاه و یک یادداشت محبتآمیز و گرم (که لحنی متکبرانه نداشته باشد) برای همراهی با جعبه غذا مینویسد.
- چاپ لیست: سیستم یک کارت قابل چاپ با محتویات تفکیک شده و یک کد QR/بارکد شبیهسازی شده برای ثبت سریع در مرکز پذیرش تولید میکند. همچنین هنگام تعهد کاربر به اهدا یا چاپ لیست، یک انیمیشن کاغذ رنگی (Confetti) نمایش داده میشود.
برای تضمین قابلیت اطمینان، توسعهدهنده یک «دفترچه قانون» سختگیرانه برای پرامپتهای بینایی تعریف کرده است. به نقل از گزارشهای توسعه، نسخههای اولیه دچار توهم (Hallucination) — شبیه دوستی که خاطرهای را اشتباه تعریف میکند — میشدند و اقلام مشابه را دو بار میشمردند یا برچسبهای رژیمی خیالی میساختند. در نسخه جدید، پرامپت مدل را مجبور میکند کل قاب از جمله پسزمینه را اسکن کند، کالاهای یکسان را در یک ردیف با تعداد دقیق گروهبندی کند (به جای ایجاد پنج ردیف تکراری) و برچسبهایی مثل «بدون گلوتن» را تنها در صورتی اعمال کند که صراحتاً روی بستهبندی نوشته شده باشد یا یک حقیقت غیرقابل انکار باشد.
معماری و پیادهسازی
پایداری فنی در این پروژه اولویت داشت. این برنامه با Next.js 16 (App Router)، Tailwind v4 و shadcn/ui ساخته شده و از طریق کتابخانه @google/generative-ai با گوگل ارتباط برقرار میکند. ساختار پروژه به مسیرهای API خاصی تقسیم شده است: /api/analyze-pantry برای تحلیل چندوجهی و /api/generate-kit برای تولید دستور پخت و یادداشت.
برای جلوگیری از توقف برنامه در زمان دمو، یک سیستم جایگزین (Fallback) طراحی شده است. اگر کلید GEMINI_API_KEY در فایل .env.local موجود نباشد یا در فراخوانی مدل خطایی رخ دهد، مسیرها بهطور خودکار به دادههای شبیهسازی شدهی منتخب باز میگردند. این کار تضمین میکند که داوران یا کاربرانی که کلید API ندارند، هرگز با صفحه خطا مواجه نشوند.
طراحی رابط کاربری (UI) را نیز بهگونهای تغییر دادهاند تا از ظاهر تکراری وبسایتهای مدرن فاصله بگیرد. توسعهدهنده آیکونهای درخشان (Sparkle)، جعبههای آیکون با رنگهای گرادینت و انیمیشنهای پرشی هنگام هاور (Hover) را حذف کرد. بهجای آن، برنامه از یک سلسلهمراتب تایپوگرافی تمیز استفاده میکند: فونت Space Grotesk برای تیترها، Inter برای متن بدنه و یک فونت دستنویس خاص برای یادداشتهای محبتآمیز.
استقرار پروژه روی Railway انجام شده است، زیرا پروژه برای مدیریت سه مسیر API سمت سرور و درخواستهای Geocoding به یک سرور Node نیاز داشت و میزبانهای استاتیک برای این منظور کافی نبودند.
این پروژه نقش هوش مصنوعی را از یک چتبات ساده به یک هماهنگکننده لجستیکی تغییر میدهد. با ترکیب استخراج دادههای ساختاریافته (از طریق responseSchema در Gemini برای تضمین مطابقت خروجی با تایپهای برنامه) و ادغام با APIهای دنیای واقعی، یک نیت مبهم به یک اقدام concrete تبدیل میشود. این ثابت میکند که هوش مصنوعی چندوجهی زمانی بیشترین اثرگذاری را دارد که یک نقطه اصطکاک خاص در دنیای فیزیکی را حل کند، نه اینکه صرفاً متن تولید کند.
برای کاربر عادی، این یعنی «بار ذهنی» خیریه کاهش مییابد. بهجای صرف یک ساعت برای مرتب کردن کنسروها و جستوجو در گوگلمپ، هوش مصنوعی کارهای اداری را انجام میدهد تا انسان روی عمل بخشش تمرکز کند.
توسعهدهندگان علاقهمند میتوانند کد منبع را در گیتهاب (https://github.com/780s/pantrybridge.git) بررسی کنند تا ببینند پرامپتهای بینایی برای مدیریت موجودی با دقت بالا چگونه ساختار یافتهاند.
گام بعدی شما
- اگر توسعهدهنده هستید، ساختار
responseSchemaدر Gemini را برای تبدیل تصاویر به دادههای ساختاریافته بررسی کنید. - برای پروژههای اجتماعی، ترکیب مدلهای بینایی با APIهای مکانیابی (Geocoding) را برای کاهش اصطکاک کاربر امتحان کنید.
- از متدهای Fallback برای دموهای زنده استفاده کنید تا نبود API مانع از نمایش جریان کاری نشود.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو