get-wrapped
Turn your structured data into a yearly Wrapped-style summary, just like your favorite music recaps — but for any dataset. Works seamlessly with both OpenAI and Anthropic models.
Features
- Generate engaging, punchy recaps from any structured data.
- Provider-agnostic: works with OpenAI or Anthropic automatically.
- Simple, library-first API: just pass a summary dictionary.
- Easy integration with pandas or any analytics pipeline.
Installation
Install from PyPI:
pip install get-wrapped
Environment Variables
Set your model credentials (Not needed if you pass in your model credentials):
Anthropic Example:
export MODEL_API_URL="https://api.anthropic.com/v1/complete"
export MODEL_API_KEY="sk-xxxx"
export MODEL_NAME="claude-sonnet-4" # optional
Or OpenAI Example:
export MODEL_API_URL="https://api.openai.com/v1/chat/completions"
export MODEL_API_KEY="sk-xxxx"
export MODEL_NAME="gpt-4.1-mini" # optional
Usage
from get_wrapped import generate_wrapped
summary = {
"rows": 5,
"columns": {
"activity": {"top_values": {"run": 3, "bike": 2}, "dtype": "object", "nulls": 0},
"minutes": {"min": 20, "max": 60, "mean": 35, "sum": 175, "dtype": "float64", "nulls": 0},
},
}
# Example summary (or pandas dataframe)
# summary = pd.DataFrame({
# "activity": ["run", "run", "run", "bike", "bike"],
# "minutes": [20, 30, 35, 30, 60]
# })
wrapped_text = generate_wrapped(summary)
print(wrapped_text)
Output -
# 🏃♀️ Your Activity Recap
## **Total Sessions** 📊
5 activities logged
## **Time Investment** ⏱️
175 total minutes of activity
Average session: 35 minutes
## **Activity Breakdown** 🔥
**Running** dominated with 3 sessions
**Biking** rounded out with 2 sessions
## **Session Range** 📈
Shortest: 20 minutes
Longest: 60 minutes
## **The Verdict** ✨
You kept it consistent with a solid mix of cardio activities! 🎯
How it works
- Provide a structured summary of your dataset.
- The library generates a prompt and sends it to your LLM (OpenAI or Anthropic).
- Receive a fun, readable Wrapped-style recap strictly based on your data.
- Bring your own API key—or let the library pick it up from your local environment.
Development
Clone the repository:
git clone https://github.com/kkumar/get-wrapped.git
cd get-wrapped
uv sync
uv run python examples/run_wrapped.py
License
MIT License — see LICENSE for details.
Metadata
Release files for get-wrapped 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| get_wrapped-0.1.3.tar.gz | 3.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| get_wrapped-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 8.8 kB
Release files / get_wrapped-0.1.3.tar.gz
| Download URL | get_wrapped-0.1.3.tar.gz |
|---|---|
| Size | 3.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a61ef5c96d27e1cff416dee7311b28ca66029f7a1096c781328f00711ef8bcff
|
|
BLAKE2b-256 checksum How to use checksums |
3bc27e787b909256d6843b8c15a3d00d9652395d6aa13c8d4f047c2b4c0d6e69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|
Release files / get_wrapped-0.1.3-py3-none-any.whl
| Download URL | get_wrapped-0.1.3-py3-none-any.whl |
|---|---|
| Size | 5.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec53bca5289827f1c87241a805bfb32afd0c4333343b22c086be53ab4ac637e0
|
|
BLAKE2b-256 checksum How to use checksums |
97a024f153852d3aca66c02d970b7ccaab7b1a5a4de012c226767fe8599a93f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.2
|