diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 00000000..5a4ce435
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,28 @@
+# Installation
+
+## Build from source
+
+To build and run Ragbits from the source code:
+
+1. Requirements: [**uv**](https://docs.astral.sh/uv/getting-started/installation/) & [**python**](https://docs.astral.sh/uv/guides/install-python/) 3.10 or higher
+2. Install dependencies and run venv in editable mode:
+
+```bash
+$ source ./setup_dev_env.sh
+```
+
+## Install pre-commit
+
+To ensure code quality we use pre-commit hook with several checks. Setup it by:
+
+```
+pre-commit install
+```
+
+All updated files will be reformatted and linted before the commit.
+
+To reformat and lint all files in the project, use:
+
+`pre-commit run --all-files`
+
+The used linters are configured in `.pre-commit-config.yaml`. You can use `pre-commit autoupdate` to bump tools to the latest versions.
diff --git a/README.md b/README.md
index 2a2d8255..c47afb68 100644
--- a/README.md
+++ b/README.md
@@ -1,32 +1,90 @@
-# Ragbits
+
-Repository for internal experiment with our upcoming LLM framework.
+
Ragbits
-# Installation
+*Building blocks for rapid development of GenAI applications*
-## Build from source
+[Documentation](https://ragbits.deepsense.ai) | [Contact](https://deepsense.ai/contact/)
-To build and run Ragbits from the source code:
+[![PyPI - License](https://img.shields.io/pypi/l/ragbits)](https://pypi.org/project/ragbits)
+[![PyPI - Version](https://img.shields.io/pypi/v/ragbits)](https://pypi.org/project/ragbits)
+[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/ragbits)](https://pypi.org/project/ragbits)
-1. Requirements: [**uv**](https://docs.astral.sh/uv/getting-started/installation/) & [**python**](https://docs.astral.sh/uv/guides/install-python/) 3.10 or higher
-2. Install dependencies and run venv in editable mode:
+
-```bash
-$ source ./setup_dev_env.sh
+---
+
+## What's Included?
+
+- [X] **[Core](packages/ragbits-core)** - Fundamental tools for working with prompts and LLMs.
+- [X] **[Document Search](packages/ragbits-document-search)** - Handles vector search to retrieve relevant documents.
+- [X] **[CLI](packages/ragbits-cli)** - The `ragbits` shell command, enabling tools such as GUI prompt management.
+- [ ] **Flow Controls** - Manages multi-stage chat flows for performing advanced actions *(coming soon)*.
+- [ ] **Structured Querying** - Queries structured data sources in a predictable manner *(coming soon)*.
+- [ ] **Caching** - Adds a caching layer to reduce costs and response times *(coming soon)*.
+- [ ] **Observability & Audit** - Tracks user queries and events for easier troubleshooting *(coming soon)*.
+- [ ] **Guardrails** - Ensures response safety and relevance *(coming soon)*.
+
+## Installation
+
+To use the complete Ragbits stack, install the `ragbits` package:
+
+```sh
+pip install ragbits
+```
+
+Alternatively, you can use individual components of the stack by installing their respective packages: `ragbits-core`, `ragbits-document-search`, `ragbits-cli`.
+
+## Quickstart
+
+First, create a prompt and a model for the data used in the prompt:
+
+```python
+from pydantic import BaseModel
+from ragbits.core.prompt import Prompt
+
+class Dog(BaseModel):
+ breed: str
+ age: int
+ temperament: str
+
+class DogNamePrompt(Prompt[Dog, str]):
+ system_prompt = """
+ You are a dog name generator. You come up with funny names for dogs given the dog details.
+ """
+
+ user_prompt = """
+ The dog is a {breed} breed, {age} years old, and has a {temperament} temperament.
+ """
```
-## Install pre-commit
+Next, create an instance of the LLM and the prompt:
-To ensure code quality we use pre-commit hook with several checks. Setup it by:
+```python
+from ragbits.core.llms.litellm import LiteLLM
+llm = LiteLLM("gpt-4o")
+example_dog = Dog(breed="Golden Retriever", age=3, temperament="friendly")
+prompt = DogNamePrompt(example_dog)
```
-pre-commit install
+
+Finally, generate a response from the LLM using the prompt:
+
+```python
+response = await llm.generate(prompt)
+print(f"Generated dog name: {response}")
```
-All updated files will be reformatted and linted before the commit.
+
+
+## License
-To reformat and lint all files in the project, use:
+Ragbits is licensed under the [MIT License](LICENSE).
-`pre-commit run --all-files`
+## Contributing
-The used linters are configured in `.pre-commit-config.yaml`. You can use `pre-commit autoupdate` to bump tools to the latest versions.
+We welcome contributions! Please read [CONTRIBUTING.md](CONTRIBUTING.md) for more information.