Data requirements for integrating with Northfork

Overview

In order for Northfork to be able to do it’s work, we need to persist data in our end. This includes recipe, product and inventory data. This allows us to make the best choice possible when it comes to for instance transforming a recipe into a list of products. Northfork take pride in being able to handle pretty much any kind of format that can be made available to us.

Recipes

We’ve probably seen every type of format there is, for recipes, and are very flexible in whatever format you prefer.

  1. Schema.org

    If your content is formatted using the Schema.org standard, Northfork can take advantage of that and import your data seamlessly. Below is the list of the data we need to make your recipes shopable.

    For more information about the format, visit Schema.org.

    Mandatory fields

    identifier
    Unique identifier. Used as reference to communicate between Northfork and the Publisher.

    name
    Recipe title.

    image
    Image URL or URI.

    recipeYield
    Number of portions/servings that the recipe yields.

    recipeIngredient
    A list of ingredients.

    recipeCategory
    Categories/tags associated to the recipe.

    url
    Source URL or URI to display the recipe’s page.

    Optional fields

    cookTime
    Total time it takes to cook the recipe (including preparation and waiting).

    recipeCuisine
    Type of cuisine. 

    recipeInstructions
    Instructions on how to cook the recipe.

    about
    Short description of the recipe.

    aggregateRating
    Rating of the recipe. Can be used to filter by e.g. popularity.

    author
    Owner of the recipe.

  2. Customised

    Regardless of the way you store your recipe data currently, Northfork can ingest it to our system. Below is an JSON example of what it could look like:

    [
      {
        "id": 12345,
        "title": "Fish Taco deluxe",
        "image_url": "https://somesite.com/images/fish_taco_deluxe.jpg",
        "portions": 4,
        "ingredients": [
          {
            "name": "Tortillas",
            "amount": "2",
            "unit": "pcs"
          },
          {
            "name": "Fish fillet",
            "amount": "200",
            "unit": "g"
          },
          {
            "name": "Lime juice",
            "amount": "1",
            "unit": "oz"
          }
        ]
      }
    ]

Products

  1. Products

    MINIMUM REQUIREMENTS

    ProductID/EAN/GTIN 123456
    Name Yellow onion
    Manufacturer   Barilla
    Size 180
    Unit g
    Section 1/2/3 Vegetables/greens/avocado
    Image 245_IMG

    RECOMMENDED REQUIREMENTS

    State (labels) Frozen/fresh/canned
    Country DK/SE/US
    Environmental marking (labels) Organic, CO2 Emissions etc.
    Popularity is relative 1
    Perishable date 3 days / 2017-08-02
    Order type Piece|Weight

    AVAILABILITY

    MINIMUM REQUIREMENTS

    Store id 123456
    Product id 123
    Price 14,35
    Discount Price   12,34 (when applicable)
    Availability y/n
    In stock y/n

  2. Customised

    Catalog

    Northfork will need meta information about all grocery products, which are available in one or more stores, that ingredients can be converted to. Below is a JSON example of the basic meta data Northfork needs:

    [
      {
        "identifier": 12345,
        "title": "Penne",
        "brand": "Barilla",
        "size": "500",
        "unit": "g",
        "image_url": "https://somesite.com/images/penne_250x250.png"
      },
      {
        "identifier": 12346,
        "title": "Fusilli",
        "brand": "Barilla",
        "size": "350",
        "unit": "g",
        "image_url": "https://somesite.com/images/fusilli_250x250.png"
      }
    ]

    Inventory & Pricing

    In order for the Northfork Smart Cart Resolver to be able to recommend the best available products for the end user, Northfork need data about the products’ inventory status and prices. Below is a JSON example on what it could look like:

    [
      {
        "store_id": 1,
        "product_id": 12345,
        "price": 1.49
      },
      {
        "store_id": 1,
        "product_id": 12346,
        "price": 1.69
      }
    ]

Continuous updates

API integration

Northfork is able to adapt to whatever APIs the retailer has available for third parties to keep the data as “up-to-date” as possible.

Full files

The most common way for Northfork to continuously synchronise data with a retailer is with full files, especially for the product catalog. When it comes to Inventory & Pricing, it varies depending on the amount of data we need to keep track.

Push
SFTP – You push files to Northfork’s server.
AWS S3 – You push files to a Northfork provided S3 bucket.

Pull
Customised – Northfork can pull files from a setup you currently use.

Message Bus
Push – Retailer produces messages to Northfork’s message bus (Kafka)
Pull – Northfork consumes messages from an external message bus.