Proposal: forecast-based reorder points and shortage allocation ("Replenishment Planner")
Les mainteneurs répondent en général sous 4 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 25/100
- Type d'issue
- Fonctionnalité
- Clarté
- À clarifier
- Activité
- Active
- Domaine
- analytics, data, full-stack
Piste de recherche
Start by reading the proposal, the linked docs/replenishment.md write-up, and the prototype under app/services/replenishment/. Review the proposed service objects, controller, views, sidebar link, and specs, then seek maintainer decisions on scope and the PR breakdown. Done would mean an agreed feature direction and an approved, testable implementation plan.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Hi, I'm Arnav, a developer interested in Ruby for Good's mission. I've built a prototype feature on a fork and would love feedback on whether it's something Human Essentials would want, and how you'd like it broken into PRs.
Problem
Today banks set on_hand_minimum_quantity by hand and LowInventoryQuery flags items below it. That number doesn't update as demand changes, so slow items can have high minimums (cash and shelf space tied up) while fast movers have none (surprise stockouts). There's also no help deciding how to split an item across partners when requests exceed what's on hand.
What the prototype does
- Demand forecast per item: builds a monthly series from the last 24 complete months of distributions (or partner requests). It tries a few simple models (moving average, exponential smoothing, damped-trend Holt, seasonal naive) and picks the one with the lowest out-of-sample error on a rolling backtest.
- Reorder point + suggested order: a standard periodic-review inventory policy. Safety stock scales with forecast error, lead time and a chosen service level (e.g. 95%). Items are flagged "Order now / Reorder / OK", shown next to the bank's existing manual minimum for comparison.
- Shortage allocation: on an item page, if open requests exceed stock, it shows two suggested splits (proportional vs. max-min fair) with fill rates. It's advisory only and never changes requests or distributions.
It's read-only: no migrations, no changes to existing models or inventory events. New code lives in app/services/replenishment/, plus one controller, two views, a sidebar link, and specs.
- Write-up with the math: https://github.com/arnavt687/human-essentials/blob/main/docs/replenishment.md
- Code: https://github.com/arnavt687/human-essentials/tree/main/app/services/replenishment

Proposed PR plan (small pieces)
- Forecasting / reorder / allocation service objects + unit specs (no UI)
- Replenishment page behind a Flipper flag + request specs
- Item detail page with the allocation suggestion
Questions for maintainers
- Is this a direction you'd want in the app? Should it start behind a feature flag?
- Is there a better place in the nav (e.g. under Inventory or Reports)?
- Would any banks be willing to try it and give feedback?
- Langage dominant
- Ruby
- Étoiles
- 593
- Forks
- 594
- Merge moyen
- 6 j 21 h
- PR mergées (30 j)
- 35
Préparer son environnement
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rubyforgood/human-essentials
-
Export button on annual report should revert to "Export Report" from "Please Wait..." once report generated.Peut-être pris @costajohnt l’a pris il y a 5 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
rubyforgood/human-essentials#5691 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 4 jours
-
stale
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
rubyforgood/human-essentials#5603 · 6 commentaires ·
Les mainteneurs répondent en général sous 4 jours
-
Add link to email samples from the User GuidePeut-être à nouveau libre @StephanieFarid l’a pris il y a 32 jours, et aucune pull request n’est ouverte. OuverteRuby for Good 2026 DC stale
rubyforgood/human-essentials#5694 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 4 jours
-
Difficulty—Intermediate Ruby for Good 2026 DC
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
rubyforgood/human-essentials#5687 ·
Les mainteneurs répondent en général sous 4 jours
-
Re audit status from "Confirmed" to "Pending"Peut-être à nouveau libre @ashvarpe l’a pris il y a 32 jours, et aucune pull request n’est ouverte. OuverteDifficulty—Beginner Ruby for Good 2026 DC
rubyforgood/human-essentials#5683 · 2 commentaires · 1 personne assignée ·
Les mainteneurs répondent en général sous 4 jours
Toutes les issues de rubyforgood/human-essentials
Issues similaires
-
security
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
IBM/aspera-cli#265 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 92/100
Les mainteneurs répondent en général sous 3 jours
-
[Bug]: QR Code do Evolution Go não aparece no CRM com Evolution Go 0.7.2 (campos em minúsculo)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
evolution-foundation/evo-ai-crm-community#423 ·
Les mainteneurs répondent en général sous 1 jour