Feedy

Draft v0.1 · open for comment

One standard for what every food bank needs, has, and can take.

Good food often doesn’t reach people in need, not for lack of supply, but because pantries, donors, and drivers don’t share a common language. Feedy is a small, open data standard that gives them one.

  • Needs Feedpublished by each pantry
  • Offer formatpublished by grocers and distributors
  • Matchingconnects the two for donors and drivers

Part 1

The Feedy Needs Feed

An open format each pantry publishes, so anyone who wants to help can see what is actually useful today. It is an extension to Open Referral HSDS: the organization, location, and service records pantries already maintain stay exactly as they are. Feedy adds the fields that describe food, capacity, and timing. Nothing gets replaced.

Items needed
Classified by GS1 product categories (GPC), so “canned vegetables” means the same thing everywhere.
Quantity and urgency
How much, in which unit, and how soon: low, medium, or high, with an optional needed-by date.
On hand and surplus
What the pantry already has enough of, and what it could pass along to a neighbor.
Open storage capacity
Free space for dry, cold, and frozen goods, so no one delivers what can’t be stored.
Hours and windows
Opening hours plus separate pickup and delivery receiving windows.

Part 2

The Feedy Offer format

For grocers and distributors. Retail systems already describe product movement in detail. Feedy maps that existing data into one standard offer record, so a store doesn’t need a new system to say “this food is available.”

  • X12 852 Product activity
  • X12 846 Inventory
  • Shrink Near-date and markdown feeds
Item
A plain description plus the GTIN where known, or a GS1 category when it isn’t.
Quantity
Count and unit: each, case, or pallet.
Best-by date
So matching can favor pantries that will distribute in time.
Location
Where the food is, down to the loading dock.
Pickup window
When it can be collected, and when the offer expires.

Part 3

Matching

An AI layer reads both feeds and turns them into clear, practical next steps for each group.

For donors

See where food is needed right now, which pantries can store it, and which offer fits which shelf.

For drivers

Get efficient pickup and drop-off runs that respect receiving windows, storage type, and best-by dates.

For pantries

See what’s coming and when, so volunteers, shelf space, and cold storage are ready on arrival.

Part 4

Sample payloads

Two short records show the shape of the draft. Field names may change before v1.0.

Needs recordDraft v0.1 example, made-up data
{
  "feedy": "0.1-draft",
  "type": "needs",
  "publisher": {
    "name": "Example Community Pantry",
    "url": "https://pantry.example.org",
    "hsds": {
      "organization_id": "org-example-0001",
      "location_id": "loc-example-0001"
    }
  },
  "updated_at": "2026-10-07T09:00:00-05:00",
  "needs": [
    {
      "category": {
        "scheme": "gs1-gpc",
        "code": "10000000",
        "label": "Canned vegetables"
      },
      "quantity": {"value": 240, "unit": "each"},
      "urgency": "high",
      "needed_by": "2026-10-14"
    },
    {
      "category": {
        "scheme": "gs1-gpc",
        "code": "10000001",
        "label": "Shelf-stable milk"
      },
      "quantity": {"value": 30, "unit": "case"},
      "urgency": "medium"
    }
  ],
  "on_hand": [
    {
      "category": {
        "scheme": "gs1-gpc",
        "code": "10000002",
        "label": "Dry pasta"
      },
      "quantity": {"value": 18, "unit": "case"},
      "status": "surplus"
    }
  ],
  "storage_capacity": {
    "dry": {"open": 6, "unit": "pallet"},
    "cold": {"open": 1, "unit": "pallet"},
    "frozen": {"open": 0, "unit": "pallet"}
  },
  "hours": [{"days": ["tu", "th"], "opens": "10:00", "closes": "14:00"}],
  "receiving": [
    {
      "mode": "delivery",
      "days": ["mo", "we"],
      "start": "08:00",
      "end": "11:00"
    },
    {
      "mode": "pickup",
      "days": ["fr"],
      "start": "13:00",
      "end": "16:00"
    }
  ]
}
Offer recordDraft v0.1 example, made-up data
{
  "feedy": "0.1-draft",
  "type": "offer",
  "offer_id": "offer-example-20261007-001",
  "offered_by": {
    "name": "Example Fresh Market #12",
    "url": "https://grocer.example.org"
  },
  "mapped_from": {"x12": "846", "note": "inventory snapshot, near-date items"},
  "items": [
    {
      "description": "Green beans, canned, 14.5 oz",
      "gtin": "00614141123452",
      "category": {
        "scheme": "gs1-gpc",
        "code": "10000000",
        "label": "Canned vegetables"
      },
      "quantity": {"value": 96, "unit": "each"},
      "best_by": "2026-11-30",
      "storage": "dry"
    }
  ],
  "location": {
    "name": "Example Fresh Market #12, loading dock B",
    "address": "100 Example Avenue, Springfield",
    "hsds_location_id": "loc-example-0200"
  },
  "pickup_window": {
    "start": "2026-10-08T14:00:00-05:00",
    "end": "2026-10-08T17:00:00-05:00"
  },
  "expires_at": "2026-10-08T17:00:00-05:00"
}

Get involved

Join the waitlist

Pantries, grocers, drivers, and developers: sign up to review the draft, try early tools, and help shape v1.0.