Welcome HN! Here's a promo code for a free month of Tamber FIFO

Tamber has been acquired!

It has been an incredible journey building and scaling our personalization platform to so many talented developer teams, and millions of end users. We are excited to begin the next phase of Tamber's journey at Beek.io. Read more here.

Give users what they like

Engage users the second they land with personalized content, optimized to make sure they see something they will click on right away.

const items = await tamber.discover.recommended({
    user: "user_rlox8k927z7p",
    number: 10
});
items, info, err := discover.Recommended(
    &tamber.DiscoverRecommendedParams{
    User: tamber.IdString("user_rlox8k927z7p"),
    Number: tamber.Int(10)
    }
)
TMBDiscoverParams *params = [TMBDiscoverParams discoverRecommended:[NSNumber numberWithInt:10]];
[[Tamber client] discoverRecommended:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSString *errorMessage) {\
    if(errorMessage){\
        // Handle error\
    } else {\\
        object.discoveries // Array of recommendations\
    }\
}];
items = Tamber::Discover.recommended(
  :user => 'user_rlox8k927z7p',
  :number => 10
)
$ curl https://api.tamber.com/v1/discover/recommended \
\	-u Mu6DUPXdDYe98cv5JIfX: \
\	-d user=user_rlox8k927z7p \
\	-d number=10
JSONObject resp = tamber.discover.next(new JSONObject()
        .put("user", "user_rlox8k927z7p")
        .put("number", 10)
    );
items = tamber.Discover.recommended(
    user='user_rlox8k927z7p',
    number=10
)
const items = await tamber.discover.next({
    user: "user_rlox8k927z7p",
    item: "item_83jx4c57r2ru"
});
items, info, err := discover.Next(&tamber.DiscoverNextParams{
    User: tamber.IdString("user_rlox8k927z7p"),
    Item: tamber.IdString("item_83jx4c57r2ru")
})
TMBDiscoverParams *params = [TMBDiscoverParams discoverNext:@"90674"];
[[Tamber client] discoverNext:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSString *errorMessage) {\
    if(errorMessage){\
        // Handle error\
    } else {\
        object.discoveries // Array of recommendations\
    }\
}];
items = Tamber::Discover.next(
  :user => '583480',
  :item => '90674'
)
$ curl https://api.tamber.com/v1/discover/recommended \
\	-u Mu6DUPXdDYe98cv5JIfX: \
\	-d user=user_rlox8k927z7p \
\	-d item=item_83jx4c57r2ru
JSONObject resp = tamber.discover.next(new JSONObject()
        .put("user", "user_rlox8k927z7p")
        .put("item", "item_83jx4c57r2ru")
    );
items = tamber.Discover.next(
    user='user_rlox8k927z7p',
    item='item_83jx4c57r2ru'
)

Create a path of discovery

Create a path of discovery that keeps users clicking. Tamber’s next-model learns on sequences of user actions to predict what users will most want to interact with next.

Reel them back in

Keep users coming back by sending recommendations via email or push notification. Tamber’s push-model ensures that content is always relevant, and your messages always delightful.

Integration easy as π

Track user events just like you do for analytics, or use our Segment integration for a codeless install.

[Checkout our SDKs on Github

  • Node.js
  • Ruby
  • Python
  • Go
  • Objective-C
  • Java
  • curl
var tamber = require('tamber')('Mu6DUPXdDYe98cv5JIfX');

const items = await tamber.discover.recommended({
    user: "user_rlox8k927z7p"
});
package main

import (
    tamber "github.com/tamber/tamber-go"
    "github.com/tamber/tamber-go/discover"
)

func main() {
    tamber.DefaultEngineKey = "SbWYPBNdARfIDa0IIO9L"

d, info, err := discover.Recommended(
        &tamber.DiscoverRecommendedParams{
            User: tamber.IdString("user_rlox8k927z7p"),
        }
    )
}
@import Tamber;

[Tamber setPublishableProjectKey:@"your_project_key"];
[Tamber setUser:@"user_rlox8k927z7p"];

TMBDiscoverParams *params = [TMBDiscoverParams discoverRecommended:[NSNumber numberWithInt:8]];
[[Tamber client] discoverRecommended:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSString *errorMessage) {\
    if(errorMessage){\
        // Handle error\
    } else {\
        object.discoveries // Array of recommendations\
    }\
}];
require 'tamber'
Tamber.engine_key = 'SbWYPBNdARfIDa0IIO9L'

Tamber::Discover.recommended(
  :user => 'user_rlox8k927z7p'
)
$ curl https://api.tamber.com/v1/discover/recommended \
\	-u :SbWYPBNdARfIDa0IIO9L \
\	-d user=user_rlox8k927z7p
Tamber tamber = new Tamber("Mu6DUPXdDYe98cv5JIfX", "SbWYPBNdARfIDa0IIO9L");

HashMap<String, Object> discoverParams = new HashMap<String, Object>();
discoverParams.put("user", "user_rlox8k927z7p");

JSONObject resp = new JSONObject();
try {
    resp = tamber.discover.recommended(discoverParams);
} catch (TamberException e) {
    System.out.println(String.format("%s=%s", e.getClass().getName(), e.getMessage()));
}
import tamber

tamber.engine_key = 'SbWYPBNdARfIDa0IIO9L'
tamber.Discover.recommended(
    user='user_rlox8k927z7p'
)
[\
  {\
    "item": "item_83jx4c57r2ru",\
    "score": 0.94321,\
    "item_created": 1481167989\
  },\
  ...up to 200 items per page...\
]

Recommend like Google, Amazon and Facebook.

Put the best kept secrets of the world's most effective tech companies in your app.