def build_texts_from_gems(keens):
    """
    Collects available text from each gem inside each keen in a list and returns it
    :param keens: dict of iid: keen_iid
    :return: texts: dict of iid: list of strings with text collected from each gem.
    """
    texts = {}
    for keen in keens.values():
        for gem in keen.gems:
            sents = [gem.text, gem.link_title, gem.link_description]
            sents = [s for s in sents if s]   # filters empty sentences
            if sents:
                texts[gem.gem_id] = sents
    return texts