Marketplace · AIIn progress
No-Waste
An AI-assisted marketplace against food waste. The seller uploads a photo, Gemini estimates the category and market value, and the price can't go above 30% of that value.
- Role
- Personal project · Full-stack development
- Year
- 2026
- Stack
- Laravel
- Filament
- Tailwind CSS
- Gemini API
- Pest
- Links
Context
Selling food that would otherwise be thrown away is a good idea, but platforms like this easily turn into an ordinary sales channel, or hand buyers “surprise bags” they can't see into. In No-Waste two rules are built in from the start: buyers see exactly what they're buying, and the price stays below a fixed share of the product's market value.
What I built
Price estimate
When the seller uploads a photo, it goes to Google Gemini 2.5 Flash together with a JSON schema, and the model returns the category, a confidence score and the market value in a structured form. The prompt also carries the active categories and their aliases from the database, the seller's description and the sales unit, so the price is for exactly the package being sold. Below a confidence of 0.70 the product goes to the seller for review; if no category fits and the model is confident, the system creates a new one.
Price rule
The pricing rule lives on the server: if the listing price is above 30% of the estimated market value, Form Request validation rejects it with a 422, and the admin panel enforces the same cap. To smooth out noisy estimates I wrote a service that blends each new estimate with the median of the seller's last 20 estimates in the same category.
Buyers and checkout
Buyers get a market filtered by category, nearest-first sorting by Haversine distance and a stock-aware cart. Checkout re-checks stock with row locks inside a single database transaction, splits the cart into one order per seller and snapshots prices onto the order lines. There is an eight-resource admin panel in Filament 5, a JSON API for mobile clients and 62 Pest tests. Payments run in test mode for now; the project is still in progress.
Contact
Have a project in mind?