--- a
+++ b/app.py
@@ -0,0 +1,160 @@
+"""
+Streamlit app for demo.
+"""
+
+import streamlit as st
+from aitrika.engine.online_aitrika import OnlineAItrika
+from aitrika.utils.text_parser import generate_documents
+from aitrika.llm.openai import OpenAILLM
+from dotenv import load_dotenv
+import os
+import time
+
+
+load_dotenv()
+
+st.set_page_config(
+    page_title="AItrika",
+    page_icon="images/logo.png",
+)
+st.title("AItrika 🧪")
+
+
+def response_generator(query: str):
+    response = llm.query(query=query)
+    print(response)
+    for word in response.split():
+        yield word + " "
+        time.sleep(0.05)
+
+
+def reset_conversation():
+    st.session_state.conversation = None
+    st.session_state.chat_history = None
+
+
+def format_list_to_markdown(items):
+    markdown_text = ""
+    if items[0].strip().startswith("**") and items[0].strip().endswith("**"):
+        markdown_text += f"## {items[0].strip('* ')}\n\n"
+        items = items[1:]
+    for item in items:
+        parts = item.split("\n\n")
+        if len(parts) >= 2:
+            for subitem in parts[1:]:
+                markdown_text += f"- {subitem.strip()}\n"
+        else:
+            markdown_text += f"- {item.strip()}\n"
+            markdown_text = markdown_text.replace('"', "")
+        markdown_text += "\n"
+    return markdown_text
+
+
+pubmed_id = st.text_input("Enter the PubMed ID", placeholder="23747889")
+
+if pubmed_id:
+    engine = OnlineAItrika(pubmed_id=pubmed_id)
+    documents = generate_documents(content=engine.extract_abstract())
+    llm = OpenAILLM(documents=documents, api_key=os.getenv("GROQ_API_KEY"))
+    with st.expander("Select the information that you want to extract: "):
+        option = st.selectbox(
+            " ",
+            (
+                "PubMed ID",
+                "Title",
+                "Abstract",
+                "Authors",
+                "Full text",
+                "Journal",
+                "Genes",
+                "Diseases",
+                "Species",
+                "Chemicals",
+                "Mutations",
+                "Associations between genes and diseases",
+                "Results",
+                "Bibliography",
+                "Methods",
+                "Acknowledgements",
+                "Introduction",
+                "Paper results",
+                "Number of participants",
+                "Characteristics of participants",
+            ),
+        )
+        if option == "PubMed ID":
+            st.markdown("## PubMed ID")
+            st.write(engine.extract_pubmed_id())
+        elif option == "Title":
+            st.markdown("## Title")
+            st.write(engine.extract_title())
+        elif option == "Abstract":
+            st.markdown("## Abstract")
+            st.write(engine.extract_abstract())
+        elif option == "Authors":
+            st.markdown("## Authors")
+            st.write(engine.extract_authors())
+        elif option == "Full text":
+            st.markdown("## Full text")
+            st.write(engine.extract_full_text())
+        elif option == "Journal":
+            st.markdown("## Journal")
+            st.write(engine.extract_journal())
+        elif option == "Genes":
+            st.markdown("## Genes")
+            st.dataframe(engine.extract_genes(dataframe=True))
+            st.json(engine.genes())
+        elif option == "Diseases":
+            st.markdown("## Diseases")
+            st.dataframe(engine.extract_diseases(dataframe=True))
+            st.json(engine.diseases())
+        elif option == "Associations between genes and diseases":
+            st.markdown("## Associations between genes and diseases")
+            st.dataframe(engine.extract_associations(dataframe=True))
+            st.json(engine.extract_associations())
+        elif option == "Species":
+            st.markdown("## Species")
+            st.dataframe(engine.extract_species(dataframe=True))
+            st.json(engine.extract_species())
+        elif option == "Mutations":
+            st.markdown("## Mutations")
+            st.dataframe(engine.extract_mutations(dataframe=True))
+            st.json(engine.extract_mutations())
+        elif option == "Chemicals":
+            st.markdown("## Chemicals")
+            st.dataframe(engine.extract_chemicals(dataframe=True))
+            st.json(engine.extract_chemicals())
+        elif option == "Results":
+            st.markdown("## Results")
+            st.write(engine.extract_results(llm=llm))
+        elif option == "Bibliography":
+            st.markdown("## Bibliography")
+            st.write(engine.extract_bibliography(llm=llm))
+        elif option == "Methods":
+            st.markdown("## Methods")
+            methods = engine.extract_methods(llm=llm).split("---")
+            formatted_methods = format_list_to_markdown(methods)
+            st.markdown(formatted_methods)
+        elif option == "Acknowledgements":
+            st.markdown("## Acknowledgements")
+            st.write(engine.extract_acknowledgements(llm=llm))
+        elif option == "Introduction":
+            st.markdown("## Introduction")
+            st.write(engine.extract_introduction(llm=llm))
+        elif option == "Number of participants":
+            st.markdown("## Number of participants")
+            st.write(engine.extract_number_of_participants(llm=llm))
+        elif option == "Paper results":
+            st.markdown("## Paper results")
+            paper_results = engine.extract_paper_results(llm=llm).split("---")
+            formatted_paper_results = format_list_to_markdown(paper_results)
+            st.markdown(formatted_paper_results)
+        elif option == "Characteristics of participants":
+            st.markdown("## Characteristics of participants")
+            characteristics_of_participants = (
+                engine.extract_characteristics_of_participants(llm=llm).split("---")
+            )
+            formatted_characteristics_of_participants = format_list_to_markdown(
+                characteristics_of_participants
+            )
+            st.markdown(formatted_characteristics_of_participants)