Sherlock is a program I wrote as a companion to my presentation at the ASO Conference in NYC in 2019.
It's based on top of a library I wrote called pm-prophet
It can produce curated reports about your app and it's traffic, including:
- Updates impact (both visual and textual updates)
- Seasonality
- Uplift
Sample output: is demostrated in the file examples/report.html
(which is a fit of sherlock on some fake data contained in examples/example.csv
).
- Install python 3
- Install pipenv
- Open your terminal and run
pipenv install
from the folder in which you have cloned this repository
Et Voilà. You should be all set.
Sherlock takes in input a csv file of different time-series. The naming convention is strict and it's case-sensitive.
Required columns:
date
the date of the events (expressed in dd/mm/yyyy format, e.g. 12/30/2019).update
a column with valuetextual
,visual
orall
(i.e. visual and textual) to tell sherlock what type of update was done in that particular date (in lowercase!).search_downloads
downloads data coming from iTunes connect filtered by App Store Search sourcesearch_impressions
impressions data coming from iTunes connect filtered by App Store Search source
Optional columns (if you do Apple Search Ads):
asa_impressions
impressions coming from Apple Search Adsasa
downloads coming from Apple Search Ads
Extra columns: Any other time series you like (e.g. Facebook, Google, Snapchat..) for which to compute uplift.
Usage is very simple, from the terminal run:
pipenv shell
to activate the virtual environment and:
python sherlock.py -i example.csv
To run the script. There are some options available:
Options:
-h, --help show this help message and exit
-a APP_NAME, --app-name=APP_NAME
Specify the app name if you want a more personalized
report
-i FILE, --input-file=FILE
Input CSV file
-o FILE, --output-file=FILE
Output report file (in html format)
-s SAMPLER, --sampler=SAMPLER
Sampler to use ("nuts" is slower but more precise,
default "metropolis")
-n, --no-asa Do not use ASA as an additional regressor (better
seasonality fits)
-w, --weekly Run the analysis on a weekly resampling
-r SIGMA, --remove-outliers-sigma=SIGMA
Remove outliers at more than X sigma from the mean
(suggested values range between 1.5-3.5). Default
value is: 0 that means that Sherlock will not remove
outliers
-l ALPHA, --significance-level=ALPHA
The significance level for the analysis (default is
0.05)
-k SEASONALITY_SCALE, --seasonality-scale=SEASONALITY_SCALE
The scale of the seasonality, if it fits poorly
because you have great variance due to seasonality
increase this. By default this is automatically
computed
Open the report.html
file generated by Sherlock.