From 26006214e4eb44815ebff42864b148bde307d3dd Mon Sep 17 00:00:00 2001
From: Stefan Krawczyk <stefan@dagworks.io>
Date: Fri, 6 Dec 2024 13:00:33 -0800
Subject: [PATCH] Adds testimonials

To help showcase Hamilton.
---
 docs/_static/testimonials.css | 48 +++++++++++++++++++++++++++
 docs/conf.py                  |  5 +++
 docs/main.md                  | 43 ++++++++++++++++++++++++
 docs/make_testimonials.py     | 61 +++++++++++++++++++++++++++++++++++
 4 files changed, 157 insertions(+)
 create mode 100644 docs/_static/testimonials.css
 create mode 100644 docs/make_testimonials.py

diff --git a/docs/_static/testimonials.css b/docs/_static/testimonials.css
new file mode 100644
index 000000000..e6423c725
--- /dev/null
+++ b/docs/_static/testimonials.css
@@ -0,0 +1,48 @@
+.testimonial-container {
+    display: flex;
+    flex-wrap: wrap;
+    gap: 1rem;
+    justify-content: center;
+    margin: 2rem 0;
+}
+
+.testimonial-card {
+    background: #fff;
+    border: 1px solid #ddd;
+    border-radius: 8px;
+    box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
+    max-width: 300px;
+    width: 100%;
+    padding: 1rem;
+    text-align: center;
+    transition: transform 0.2s ease-in-out;
+}
+
+.testimonial-card:hover {
+    transform: scale(1.05);
+}
+
+.testimonial-photo img {
+    border-radius: 50%;
+    height: 80px;
+    width: 80px;
+    object-fit: cover;
+    margin-bottom: 1rem;
+}
+
+.testimonial-content p {
+    font-style: italic;
+    color: #555;
+}
+
+.testimonial-content h4 {
+    margin: 0.5rem 0 0;
+    font-size: 1.1rem;
+    font-weight: bold;
+    color: #555;
+}
+
+.testimonial-content span {
+    color: #999;
+    font-size: 0.9rem;
+}
diff --git a/docs/conf.py b/docs/conf.py
index fb0ca350f..fd6d31994 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -25,6 +25,11 @@
         "color-announcement-text": "#091E42",
     },
 }
+html_static_path = ["_static"]
+
+html_css_files = [
+    "testimonials.css",
+]
 extensions = [
     "sphinx.ext.autodoc",
     "sphinx.ext.autosummary",
diff --git a/docs/main.md b/docs/main.md
index ffa9021df..e2d5cdcbc 100644
--- a/docs/main.md
+++ b/docs/main.md
@@ -61,6 +61,8 @@ Multiple companies are doing cool stuff with Hamilton! Come chat with members of
 
 * **Wealth.com** - Async Python LLM document processing pipelines
 * **Wren.ai** - Async RAG pipelines
+* **Oxehealth** - Multi-modal prediction
+* **PupPilot** - Async python LLM transcript processing pipelines
 * **Stitch Fix** — Time series forecasting
 * **British cycling** — Telemetry analysis
 * **Joby** - Flight data processing
@@ -80,3 +82,44 @@ Multiple companies are doing cool stuff with Hamilton! Come chat with members of
 * **Capitec Bank** - Financial decisions
 * **Best Egg** - Feature engineering
 * **RTV Euro AGD** - General feature engineering & machine learning
+
+# Testimonials
+
+<link rel="stylesheet" type="text/css" href="_static/testimonials.css">
+<div class="testimonial-container">
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"Hamilton provides a modular and compatible framework that has significantly empowered our data science team. We've been able to build robust and flexible data pipelines with ease. The documentation is thorough and regularly updated... Even with no prior experience with the package, our team successfully migrated one of our legacy data pipelines to the Hamilton structure within a month. This transition has greatly enhanced our productivity, enabling us to focus more on feature engineering and model iteration while Hamilton's DAG approach seamlessly manages data lineage.<br/>I highly recommend Hamilton to data professionals looking for a reliable, standardized solution for creating and managing data pipelines."</p>
+                <h4>Yuan Liu</h4>
+                <span>DS, Kora Financial</span>
+            </div>
+        </div>
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"How (with good software practices) do you orchestrate a system of asynchronous LLM calls, but where some of them depend on others? How do you build such a system so that it’s modular and testable? At wealth.com we've selected Hamilton to help us solve these problems and others. And today our product, Ester AI, an AI legal assistant that extracts information from estate planning documents, is running in production with Hamilton under the hood."</p>
+                <h4>Kyle Pounder</h4>
+                <span>CTO, Wealth.com</span>
+            </div>
+        </div>
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"Hamilton is simplicity. Its declarative approach to defining pipelines (as well as the UI to visualize them) makes testing and modifying the code easy, and onboarding is quick and painless. Since using Hamilton, we have improved our efficiency of both developing new functionality and onboarding new developers to work on the code. We deliver solutions more quickly than before."</p>
+                <h4>Michał Siedlaczek</h4>
+                <span>Senior DS/SWE, IBM</span>
+            </div>
+        </div>
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"...The companion Hamilton UI has taken the value proposition up enormously with the ability to clearly show lineage & track execution times, covering a major part of our observability needs"</p>
+                <h4>Fran Boon</h4>
+                <span>Director, Oxehealth.com</span>
+            </div>
+        </div>
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"Many thanks to writing such a great library. We are very excited about it and very pleased with so many decisions you've made. 🙏"</p>
+                <h4>Louwrens</h4>
+                <span>Software Engineer, luoautomation.com</span>
+            </div>
+        </div>
+</div>
diff --git a/docs/make_testimonials.py b/docs/make_testimonials.py
new file mode 100644
index 000000000..8f196d3c1
--- /dev/null
+++ b/docs/make_testimonials.py
@@ -0,0 +1,61 @@
+card_template = """
+        <div class="testimonial-card">
+            <div class="testimonial-content">
+                <p>"{user_quote}"</p>
+                <h4>{user_name}</h4>
+                <span>{user_title}, {user_company}</span>
+            </div>
+        </div>"""
+
+testimonials = [
+    {
+        "user_name": "Yuan Liu",
+        "user_title": "DS",
+        "user_company": "Kora Financial",
+        "user_quote": "Hamilton provides a modular and compatible framework that has significantly empowered our data science team. "
+                      "We've been able to build robust and flexible data pipelines with ease. The documentation is thorough and regularly updated... "
+                      "Even with no prior experience with the package, our team successfully migrated one of our legacy data pipelines to the Hamilton structure within a month. "
+                      "This transition has greatly enhanced our productivity, enabling us to focus more on feature engineering and model iteration while Hamilton's DAG approach "
+                      "seamlessly manages data lineage.<br/>I highly recommend Hamilton to data professionals looking for a reliable, standardized solution for creating and "
+                      "managing data pipelines.",
+        "image_link": "",
+    },
+    {
+        "user_name": "Kyle Pounder",
+        "user_title": "CTO",
+        "user_company": "Wealth.com",
+        "user_quote": "How (with good software practices) do you orchestrate a system of asynchronous LLM calls, but where some of them depend on others? "
+                      "How do you build such a system so that it’s modular and testable? At wealth.com we've selected Hamilton to help us solve these problems "
+                      "and others. And today our product, Ester AI, an AI legal assistant that extracts information from estate planning documents, is running "
+                      "in production with Hamilton under the hood.",
+        "image_link": "",
+    },
+    {
+        "user_name": "Michał Siedlaczek",
+        "user_title": "Senior DS/SWE",
+        "user_company": "IBM",
+        "user_quote": "Hamilton is simplicity. Its declarative approach to defining pipelines (as well as the UI to visualize them) makes testing and modifying "
+                      "the code easy, and onboarding is quick and painless. Since using Hamilton, we have improved our efficiency of both developing new "
+                      "functionality and onboarding new developers to work on the code. We deliver solutions more quickly than before.",
+        "image_link": "",
+    },
+    {
+        "user_name": "Fran Boon",
+        "user_title": "Director",
+        "user_company": "Oxehealth.com",
+        "user_quote": "...The companion Hamilton UI has taken the value proposition up enormously with the ability to clearly show lineage & track execution times,"
+                      " covering a major part of our observability needs",
+        "image_link": "",
+    },
+    {
+        "user_name": "Louwrens",
+        "user_title": "Software Engineer",
+        "user_company": "luoautomation.com",
+        "user_quote": "Many thanks to writing such a great library. We are very excited about it and very pleased with so many decisions you've made. 🙏",
+        "image_link": "",
+    },
+]
+
+# code to generate testimonials
+for testimonial in testimonials:
+    print(card_template.format(**testimonial))
