def get_recom_from_input(username, input_name, data):
    '''
    generate recommendations using input from the request form
        - INPUT:
            username str
            input_name  str
            data: input from the request form
        - OUTPUT:  results_dict 
           dict(username = username,\
                input_data = data, input_name = input_name, sorted_topics = sorted_topics_for_inputs, \
                idx = range(df_recom.shape[0]), \
                df_recom = df_recom, relevant_all=relevant_all)

        - pre-requisit:

    '''
    model_name = 'v2_2'
    fname = input_name

    relevant_all = None
    # hard code process used in v2_2 model
    func_tokenizer = TfidfVectorizer(stop_words='english').build_tokenizer()
    func_stemmer = PorterStemmer()

    # load model
    t0 = time.time()
    recommender = Recommender(model_name, func_tokenizer, func_stemmer)

    # read in input text
    cleaned_slack = pre_clean_text(func_tokenizer, data)

    W, tokenized_slacks2, test_X2, top_features_list = recommender.process_input(
        cleaned_slack)
    sorted_topics = recommender.topic_model.sorted_topics_for_articles(W)

    print 'input name: %s' % input_name
    # recommendations
    print '--------------- recommendations --------------'
    df_recom = recommender.calculate_recommendations(W, test_X2, fname)
    print sorted_topics
    t1 = time.time()
    print "finished in  %4.4f min %s " % ((t1 - t0) / 60, 'finished all processing\n')

    df_recom['topics'] = df_recom['topics'].apply(format_related_topics)

    results_dict = dict(username=username,
                        input_data=data, input_name=input_name, sorted_topics=sorted_topics,
                        idx=range(df_recom.shape[0]),
                        df_recom=df_recom, relevant_all=relevant_all)

    with open(dummy_result_pkl, 'w') as out_fh:
        pickle.dump(results_dict, out_fh)
    return results_dict