diff --git a/.spellcheck-en-custom.txt b/.spellcheck-en-custom.txt
index 63cf43e..5db94eb 100644
--- a/.spellcheck-en-custom.txt
+++ b/.spellcheck-en-custom.txt
@@ -1,9 +1,12 @@
-Akers
-Augumented
acp
ACP
-Arize
+ai
+Akers
+Anthropic
api
+Arize
+Augumented
+auth
beeai
BeeAI's
BJ
@@ -19,6 +22,7 @@ config
configs
Coreutils
csv
+customizable
dataframe
dataset
datetime
@@ -39,15 +43,18 @@ groq
Hargrave
Homebrew
Huggingface
+hostable
ibm
ImageMagick
inferencing
InstructLab
+integrations
ipynb
ipython
jupyter
Jupyter
Kaggle
+Kubernetes
Langchain
localhost
LLM
@@ -118,6 +125,7 @@ url
uv
verifiers
virtualenv
+watsonx
workspaces
WSL
Vectorization
diff --git a/docs/opentech/agentstack/README.md b/docs/opentech/agentstack/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/docs/opentech/agentstack/overview/README.md b/docs/opentech/agentstack/overview/README.md
new file mode 100644
index 0000000..4524838
--- /dev/null
+++ b/docs/opentech/agentstack/overview/README.md
@@ -0,0 +1,66 @@
+---
+title: Introduction to Agent Stack
+description: Introduction to Agent Stack
+logo: images/BeeAI-Logo-White.png
+---
+
+# Introduction to Agent Stack
+
+In this demo. You'll master the fundamental components of **Agent Stack** by building and running a Conference Prep Agent that helps field marketing teams prepare for conference season.
+
+Through hands-on exercises, you'll learn how to create intelligent agents with real-world applications.
+
+
+
+## 🎯 Scenario
+
+The Field Marketing Lead has asked you to help prepare their team for conference season. You'll create a **Conference Prep Agent** that intelligently combines multiple information sources to provide comprehensive conference preparation materials.
+
+Your agent will integrate three powerful tools:
+
+1. **Web Search** – Collect relevant news and up-to-date information about attendees, speakers, and industry trends
+2. **Wikipedia Tool** – Provide company history and background details on organizations and key people
+3. **Internal Knowledge Base** – Access the team's internal notes and artifacts for context-specific information
+
+
+
+## 📚 What You'll Learn
+
+Through interactive coding exercises, you'll gain hands-on experience with:
+
+### Agent Stack
+
+- **Serving agents** – Run an agent from source and see it automatically register with Agent Stack
+- **UI forms** – Use a form as input to the agent with the Agent Stack UI
+- **Monitoring** – Monitor and debug agents with built-in logging and tracing capabilities
+
+### Agent Core Components
+
+- **System Prompts** – Learn the foundation of agent behavior by crafting effective prompts that guide your agent's responses
+- **RequirementAgent** – Explore BeeAI Framework's powerful agent implementation that provides fine-grained control over agent behavior
+- **LLM Providers** – Work with both local and hosted model options to understand deployment flexibility
+
+### Advanced Features
+
+- **Memory Systems** – Implement conversation context to maintain coherent, contextual interactions across sessions
+- **Tools Integration** – Extend agent capabilities by integrating external APIs and data sources
+- **Conditional Requirements** – Enforce business logic and rules to ensure compliance and consistency
+
+
+
+## Workshop Structure
+
+To ensure a smooth experience, follow the steps in this order:
+
+1. ✅ [Prework](../pre-work/README.md) – Install dependencies and gather API keys
+2. 🔧 [Setup](../setup/README.md) – Get the code and environment ready
+4. 🤖 [Run the agent](../run/README.md) – Assemble and run your agent
+
+
+
+## Learn more about Agent Stack
+
+- 📚 **Agent Stack documentation**: [https://agentstack.beeai.dev/introduction/welcome](https://agentstack.beeai.dev/introduction/welcome)
+- 🧠 **GitHub repository**: [https://github.com/i-am-bee/agentstack](https://github.com/i-am-bee/agentstack)
+
+Ready to build your first intelligent agent? Let's dive in! 🐝
\ No newline at end of file
diff --git a/docs/opentech/agentstack/pre-work/README.md b/docs/opentech/agentstack/pre-work/README.md
new file mode 100644
index 0000000..20feed6
--- /dev/null
+++ b/docs/opentech/agentstack/pre-work/README.md
@@ -0,0 +1,57 @@
+---
+title: Prework
+description: Prework Instructions
+logo: images/BeeAI-Logo-White.png
+---
+
+# Agent Stack: Prework Instructions
+
+Welcome to the Introduction to Agent Stack.
+Please complete the following setup steps **before** the workshop.
+
+---
+
+## Python Environment Manager
+
+### `uv` (Recommended)
+
+We recommend using [`uv`](https://github.com/astral-sh/uv) as your Python package and environment manager.
+
+- If you’re unfamiliar with `uv`, refer to the [uv installation guide](https://github.com/astral-sh/uv#installation)
+- `uv` is a fast and modern alternative to pip and virtualenv, fully compatible with both
+
+---
+
+## Local Model
+
+### Install Ollama
+
+!!! note
+ To run the Granite model locally, we recommend having at least **16GB of RAM** for optimal performance.
+
+To run models locally on your machine:
+
+1. Download and install Ollama: [https://ollama.com/download](https://ollama.com/download)
+2. Run or pull the Granite model:
+
+ ```bash
+ ollama pull granite4:micro-h
+ ```
+
+ or
+
+ ```bash
+ ollama run granite4:micro-h
+ ```
+
+### Granite model links
+
+- Ollama models: [Granite 4](https://ollama.com/library/granite4)
+- Ollama models: [Granite 3.3](https://ollama.com/library/granite3.3)
+- Granite docs: [Granite](https://www.ibm.com/granite/docs/models/granite)
+
+---
+
+## You're Ready
+
+Once you've completed these steps, you're ready to setup the project.
\ No newline at end of file
diff --git a/docs/opentech/agentstack/run/README.md b/docs/opentech/agentstack/run/README.md
new file mode 100644
index 0000000..8bc7590
--- /dev/null
+++ b/docs/opentech/agentstack/run/README.md
@@ -0,0 +1,113 @@
+---
+title: Agent Stack
+description: Run the Agent Stack and use your agents in the UI
+logo: images/BeeAI-Logo-White.png
+---
+
+# Interact with your agents using Agent Stack
+
+Agent Stack is an open, self-hostable infrastructure for deploying AI agents built with any framework. A Linux Foundation project built on the Agent2Agent Protocol (A2A), Agent Stack gives you everything needed to move agents from local development to shared production environments—without vendor lock-in.
+
+## What Agent Stack provides
+
+Agent Stack provides everything you need to deploy and operate agents in production:
+
+* Self-hostable server to run your agents
+* Web UI for testing and sharing deployed agents
+* CLI for deploying and managing agents
+* Runtime services your agents can access:
+
+ * LLM Service — Switch between 15+ providers (Anthropic, OpenAI, watsonx.ai, Ollama) without code changes
+ * Embeddings & vector search for RAG and semantic search
+ * File storage — S3-compatible uploads/downloads
+ * Document text extraction via Docling
+ * External integrations via MCP protocol (APIs, Slack, Google Drive, etc.) with OAuth
+ * Secrets management for API keys and credentials
+* SDK (`agentstack-sdk`) for standardized A2A service requests
+* HELM charts for Kubernetes deployments with customizable storage, databases, and auth
+
+## Lab
+
+### 1. Install Agent Stack
+
+Install Agent Stack using the [installation instructions in the documentation](https://agentstack.beeai.dev/introduction/quickstart#installation).
+
+#### Follow the "One-Line Install"
+
+To install a specific version of Agent Stack, set the `AGENTSTACK_VERSION` environment variable before running the install script. For example:
+
+```bash
+sh -c "$(AGENTSTACK_VERSION=0.4.1 curl -LsSf https://raw.githubusercontent.com/i-am-bee/agentstack/HEAD/install.sh)"
+```
+
+### 2. Start the Agent Stack (optionally with Phoenix and Docling enabled)
+
+Agent Stack includes OpenTelemetry instrumentation to collect traces and metrics. Telemetry data helps with performance monitoring, error tracking, usage analytics, and debugging agent interactions.
+
+> Important License Notice: Phoenix is disabled by default in Agent Stack. When you enable Phoenix, be aware that Arize Phoenix is licensed under the Elastic License v2 (ELv2), which has specific terms regarding commercial use and distribution. By enabling Phoenix, you acknowledge that you are responsible for ensuring compliance with the ELv2 license terms for your specific use case. Please review the Phoenix license before enabling this feature in production environments.
+
+* To start the Agent Stack with Arize Phoenix use `--set phoenix.enabled=true`
+* To start the Agent Stack with Docling use `--set docling.enabled=true`
+
+```shell
+agentstack platform start --set phoenix.enabled=true --set docling.enabled=true
+```
+
+### 3. Launch the UI
+
+In your terminal, run:
+
+```shell
+agentstack ui
+```
+
+You should be prompted to select a model provider and model if you did not already set these.
+For this lab, use Ollama and granite4:micro-h. for the language model.
+
+You should see the UI launch in your browser.
+
+!!! insight
+ If you navigate to the menu bar on the left hand side you will see a list of agents. These example agents come with Agent Stack. We'll add our custom agent in steps that follow.
+
+### 4. Serve the agent
+
+In your terminal, run the agent:
+
+```shell
+uv run src/agent.py --directory agentstack
+```
+
+!!! insight
+ If you take a look at the code pay special attention to the metadata in the `@server.agent` decorator. The metadata is used by the UI.
+
+### 5. Run the agent
+
+1. Navigate to the menu bar on the left hand side of the UI and select the Conference Prep Agent. You might need to refresh the page.
+
+2. Notice that we build a form UI.
+
+ * `Task` is the main input to the agent.
+ * `Company name` is especially useful if your task doesn't mention the company name
+ * `Style` suggests the type of output you want. `detailed` is typically longer and may include source citations. `list` is a good option if you like bullet points.
+ * The `Event` name and `Event date` are used here primarily for UI demo purposes.
+
+3. Experiment with the different form fields. Try using one of the following tasks:
+
+ * Brief me for a Shopify meeting at the conference. Give me an overview of the company, some recent news about them, and anything important I need to know from our internal notes.
+
+ * I'm planning on meeting the Moderna rep at the next conference. Remind me where we left off on previous discussions.
+
+ * Build a security talking sheet for Siemens Energy. How does their strategy compare to their competitors'?
+
+4. Try different inputs.
+
+5. Explore:
+
+ * the trajectory steps (look in "How did I get this answer?")
+ * the captured details in Arize Phoenix
+ * browse to `http://localhost:6006/`
+ * open project "default"
+ * Select "All" (not Root Spans)
+ * Most details show up after the run
+ * Look under "All" and not "Root"
+ * source citations (not always present)
diff --git a/docs/opentech/agentstack/setup/README.md b/docs/opentech/agentstack/setup/README.md
new file mode 100644
index 0000000..560f7be
--- /dev/null
+++ b/docs/opentech/agentstack/setup/README.md
@@ -0,0 +1,45 @@
+---
+title: Setup Instructions
+description: Setup the repo and environment
+logo: images/BeeAI-Logo-White.png
+---
+
+# Setup Instructions
+
+## Get the Demo Code
+
+**Option A: Clone with Git (Recommended):**
+
+```bash
+git clone https://github.com/IBM/beeai-workshop.git
+```
+
+**Option B: Download ZIP:**
+
+If you're not comfortable with Git, [download the ZIP](https://github.com/IBM/beeai-workshop/archive/refs/heads/main.zip) file and extract it to your desired location.
+
+---
+
+## Navigate to the demo folder
+
+Navigate to the specific demo folder:
+
+```bash
+cd beeai-workshop/opentech
+```
+
+**Important:**
+Make sure to open the specific `opentech` folder, not the entire `beeai-workshop` directory.
+This ensures proper project structure and dependencies are detected.
+
+---
+
+## Install Project Dependencies
+
+1. **Install all required dependencies:**
+
+ ```bash
+ uv --directory agentstack sync
+ ```
+
+This ensures you have the correct versions of all packages used in the lab, installed in the correct environment.
diff --git a/docs/opentech/agentstack/uninstall_troubleshooting/README.md b/docs/opentech/agentstack/uninstall_troubleshooting/README.md
new file mode 100644
index 0000000..bca046b
--- /dev/null
+++ b/docs/opentech/agentstack/uninstall_troubleshooting/README.md
@@ -0,0 +1,161 @@
+---
+title: Uninstall and Troubleshooting
+description: How to uninstall Agent Stack and troubleshoot common issues
+logo: images/ibm-blue-background.png
+---
+
+# Uninstall and Troubleshooting
+
+## Uninstalling Agent Stack
+
+### Complete Uninstall
+
+To completely remove Agent Stack from your system, follow the "Uninstall" section in the [Agent Stack documentation installation guide](https://docs.beeai.dev/introduction/installation#uninstall) depending on how you installed Agent Stack.
+
+## Getting Help
+
+### CLI Documentation
+
+You can access comprehensive CLI documentation directly from your terminal:
+
+- View all available commands:
+
+ ```shell
+ agentstack --help
+ ```
+
+- Get help for specific commands:
+
+ ```shell
+ agentstack platform --help
+ agentstack env --help
+ agentstack ui --help
+ ```
+
+## Common Issues and Solutions
+
+### Port Conflicts
+
+**Problem:** "Port already in use" error when starting agents
+
+**Solution:**
+
+1. Check what's running on the port:
+
+ ```shell
+ lsof -i :
+ ```
+
+2. Kill the process if needed, substituting the number in the "PID" column:
+
+ ```shell
+ kill -9
+ ```
+
+3. Or use a different port (configured in `.env` file)
+
+### Agent Stack Won't Start
+
+**Problem:** `agentstack platform start` fails
+
+**Solutions:**
+
+1. Try stopping and restarting:
+
+ ```shell
+ agentstack platform delete
+ agentstack platform start
+ ```
+
+### API Key Issues
+
+**Problem:** Authentication errors or "Invalid API key"
+
+**Solutions:**
+
+1. Reconfigure your LLM provider:
+
+ ```shell
+ agentstack env setup
+ ```
+
+2. Verify your API key is correctly set in the environment
+3. Check that your API key has sufficient credits/quota
+
+### Python/UV Issues
+
+**Problem:** `uv sync` fails or Python dependency errors
+
+**Solutions:**
+
+1. Try clearing `uv` cache:
+
+ ```shell
+ uv cache clean
+ ```
+
+2. Reinstall dependencies:
+
+ ```shell
+ uv sync --reinstall
+ ```
+
+### Browser Issues
+
+**Problem:** Agent Stack UI doesn't load in browser
+
+**Solutions:**
+
+1. Upgrade Agent Stack to the latest version
+2. Run this command, which will check the platform and env:
+
+ ```shell
+ agentstack ui
+ ```
+
+3. Recreate your Agent Stack platform instance and try again:
+
+ ```shell
+ agentstack platform delete
+ agentstack platform start
+ agentstack ui
+ ```
+
+### Workshop Files Missing
+
+**Problem:** Can't find workshop files or folders
+
+**Solutions:**
+
+1. Ensure you cloned the correct repository:
+
+ ```shell
+ git clone https://github.com/IBM/beeai-workshop.git
+ ```
+
+2. Navigate to the correct directory:
+
+ ```shell
+ cd beeai-workshop/agentstack
+ ```
+
+3. Verify the files exist:
+
+ ```shell
+ ls -la src/
+ ```
+
+## Reset and Clean Installation
+
+If you're experiencing persistent issues, try a clean reinstall -- follow the "Uninstall" section and then the "Install" section in the [BeeAI installation documentation](https://docs.beeai.dev/introduction/installation).
+
+## Getting Additional Support
+
+If you continue to experience issues:
+
+1. Check the [Agent Stack documentation](https://docs.beeai.dev)
+2. Review the [GitHub repository](https://github.com/IBM/beeai-workshop) for known issues
+3. Ensure all prerequisites from the pre-work section are met
+
+!!! tip
+ When reporting issues, include the output of `agentstack --version` and your operating system information to help with troubleshooting.
diff --git a/docs/opentech/beeaiframework/lab-1/README.md b/docs/opentech/beeaiframework/lab-1/README.md
new file mode 100644
index 0000000..e25e21d
--- /dev/null
+++ b/docs/opentech/beeaiframework/lab-1/README.md
@@ -0,0 +1,30 @@
+---
+title: Lab 1
+description: Build an agent with BeeAI Framework
+logo: images/BeeAI-Logo-White.png
+---
+
+# Build an agent with BeeAI Framework
+
+## Prerequisites
+
+This lab is a [Jupyter notebook](https://jupyter.org/). Please follow the instructions in [prework](../../prework/README.md) before you run the lab.
+
+## Lab
+
+1. Run the following commands to create `beekernel` which has the dependencies from our `pyproject.toml` venv and launch Jupyter Lab.
+
+ ```shell
+ uv run --directory beeai-framework ipython kernel install --user --env VIRTUAL_ENV .venv --name=beekernel
+ uv run --directory beeai-framework jupyter lab
+ ```
+
+1. In Jupyter Lab in your browser, walk through the notebook:
+
+ 1. Jupyter Lab will open in your browser
+ 1. Navigate to the `notebooks` folder
+ 1. Open `beeai.ipynb`
+ 1. Use the play button to walk through the notebook
+ 1. Be sure to read the text, the code, and the output
+
+1. Exit the Jupyter Lab server by typing CTRL-C, CTRL-C (twice) in the terminal window where you started Jupyter Lab.
diff --git a/docs/opentech/beeaiframework/overview/README.md b/docs/opentech/beeaiframework/overview/README.md
index a4430d9..6d2ded3 100644
--- a/docs/opentech/beeaiframework/overview/README.md
+++ b/docs/opentech/beeaiframework/overview/README.md
@@ -6,7 +6,7 @@ logo: images/BeeAI-Logo-White.png
# Workshop Overview: Introduction to the BeeAI Framework
-In this workshop, you'll master the fundamental components of the **BeeAI Framework** by building a Conference Prep Agent that helps field marketing teams prepare for conference season. Through hands-on exercises in `Google Colab`, you'll learn how to create intelligent agents with real-world applications.
+In this workshop, you'll master the fundamental components of the **BeeAI Framework** by building a Conference Prep Agent that helps field marketing teams prepare for conference season. Through hands-on exercises, you'll learn how to create intelligent agents with real-world applications.
diff --git a/docs/opentech/docling/overview/README.md b/docs/opentech/docling/overview/README.md
index d67fadc..54b54b2 100644
--- a/docs/opentech/docling/overview/README.md
+++ b/docs/opentech/docling/overview/README.md
@@ -18,7 +18,7 @@ By the end of this workshop, you will be able to use Docling to:
| | |
|:---------------------------------------------------------------------|:------------------------------------------------------|
-| [Lab 0: Prework](../prework/README.md) | Review the prework for the workshop |
+| [Prework](../prework/README.md) | Review the prework for the workshop |
| [Lab 1: Document Conversion with Docling](../lab-1/README.md) | Learn how to use Docling to convert complex documents |
| [Lab 2: Chunking and Vectorization with Docling](../lab-2/README.md) | Learn how Docling enables advanced chunking |
| [Lab 3: Multimodal RAG with Docling](../lab-3/README.md) | Build a verifiable multimodal RAG system |
diff --git a/docs/opentech/prework/README.md b/docs/opentech/prework/README.md
index 9097d71..c8ee258 100644
--- a/docs/opentech/prework/README.md
+++ b/docs/opentech/prework/README.md
@@ -128,4 +128,18 @@ Once the downloads, install, and start are complete, you will have a fancy Open
Ideally, everyone will get hands-on experience wrapping all the pieces together with Agent Stack. If you cannot run Agent Stack on your laptop, come to the workshop anyway! We will demonstrate.
-- Agent Stack quickstart: [https://agentstack.beeai.dev/introduction/quickstart](https://agentstack.beeai.dev/introduction/quickstart)
+Follow the Agent Stack quickstart instructions. When prompted to configure your LLM provider, use the Ollama models we downloaded earlier.
+
+- Agent Stack quickstart: [https://agentstack.beeai.dev/introduction/quickstart](https://agentstack.beeai.dev/introduction/quickstart#installation)
+
+ - Select llm provider: `Ollama (local)`
+ - Type `n` when prompted to use the recommended default model
+ - Select: `ollama:granite4:micro-h`
+ - Type `n` when prompted to use the recommended embedding model
+ - Select: `ollama:ibm/granite-embedding:30m`
+
+- Restart Agent Stack with Docling and Phoenix enabled:
+
+ ```shell
+ agentstack platform start --set docling.enabled=true --set phoenix.enabled=true
+ ```
diff --git a/mkdocs.yml b/mkdocs.yml
index c7fec7c..a8afc28 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -29,6 +29,9 @@ nav:
- Document Processing Labs:
- Overview: opentech/docling/overview/README.md
- Setup: opentech/docling/setup/README.md
+ - Lab 1: opentech/docling/lab-1/README.md
+ - Lab 2: opentech/docling/lab-2/README.md
+ - Lab 3: opentech/docling/lab-3/README.md
- Open Source AI Labs:
- Overview: opentech/llm/overview/README.md
- Setup: opentech/llm/setup/README.md
@@ -39,8 +42,14 @@ nav:
- Lab 5: opentech/llm/lab-5/README.md
- Lab 7: opentech/llm/lab-7/README.md
- Agentic AI Labs:
- - BeeAI Framework: opentech/beeaiframework/overview/README.md
- - Agent Stack: opentech/agentstack/README.md
+ - BeeAI Framework:
+ - Overview: opentech/beeaiframework/overview/README.md
+ - Lab: opentech/beeaiframework/lab-1/README.md
+ - Agent Stack:
+ - Overview: opentech/agentstack/overview/README.md
+ - Prework: opentech/agentstack/pre-work/README.md
+ - Setup: opentech/agentstack/setup/README.md
+ - Lab: opentech/agentstack/run/README.md
- Demos:
- Introduction to BeeAI Platform:
- Overview: introduction_beeai_platform/overview/README.md
diff --git a/opentech/agentstack/src/agent.py b/opentech/agentstack/src/agent.py
new file mode 100644
index 0000000..5b318ca
--- /dev/null
+++ b/opentech/agentstack/src/agent.py
@@ -0,0 +1,498 @@
+# Copyright 2025 © BeeAI a Series of LF Projects, LLC
+# SPDX-License-Identifier: Apache-2.0
+
+# BeeAI Platform demo based on the Intro to BeeAI Framework Workshop 🐝
+#
+# 🎯 Scenario: The Field Marketing Lead has asked you to help prepare their team for conference season. You create a Conference Prep Agent that uses 3 tools: web search to collect relevant news and search for up to date information, Wikipedia to provide company history and details, and the team's internal notes and artifacts.
+
+# System
+import asyncio
+from datetime import date
+import logging
+import json
+import os
+import sys
+from typing import Annotated
+
+# Third party
+from beeai_sdk.a2a.extensions import (
+ AgentDetailContributor,
+ AgentDetailTool,
+ CitationExtensionServer,
+ CitationExtensionSpec,
+)
+from a2a.types import AgentCapabilities, AgentSkill
+from a2a.utils.message import get_message_text
+from dotenv import load_dotenv
+from openinference.instrumentation.beeai import BeeAIInstrumentor
+
+# BeeAI Framework imports
+from beeai_framework.utils.strings import to_json_serializable
+from beeai_framework.agents.requirement import RequirementAgent
+from beeai_framework.agents.requirement.events import RequirementAgentSuccessEvent
+from beeai_framework.agents.requirement.requirements.conditional import ConditionalRequirement
+from beeai_framework.backend import ChatModel, ChatModelParameters
+from beeai_framework.backend.document_loader import DocumentLoader
+from beeai_framework.backend.embedding import EmbeddingModel
+from beeai_framework.backend.text_splitter import TextSplitter
+from beeai_framework.backend.vector_store import VectorStore
+from beeai_framework.emitter import EventMeta
+from beeai_framework.memory import SummarizeMemory
+from beeai_framework.middleware.trajectory import GlobalTrajectoryMiddleware
+from beeai_framework.tools import Tool, tool
+from beeai_framework.tools.search.duckduckgo import DuckDuckGoSearchTool
+from beeai_framework.tools.search.retrieval import VectorStoreSearchTool
+from beeai_framework.tools.search.wikipedia import WikipediaTool, WikipediaToolInput
+from beeai_framework.tools.think import ThinkTool
+
+# BeeAI SDK imports
+from beeai_sdk.a2a.extensions import TrajectoryExtensionServer, TrajectoryExtensionSpec
+from beeai_sdk.a2a.extensions import Citation
+from beeai_sdk.a2a.types import AgentMessage
+
+from a2a.types import (
+ Message,
+)
+
+from beeai_sdk.server import Server
+from beeai_sdk.server.context import RunContext
+
+import beeai_sdk.a2a.extensions
+from beeai_sdk.a2a.extensions.ui.form import (
+ DateField,
+ TextField,
+ FileField,
+ CheckboxField,
+ MultiSelectField,
+ OptionItem,
+ FormExtensionServer,
+ FormExtensionSpec,
+ FormRender,
+)
+
+# Constants
+AGENT_NAME = "Conference Prep Agent"
+
+# Read .env and set environment variables
+load_dotenv()
+
+
+# ## 1️⃣ LLM Providers: Choose Your AI Engine
+
+# BeeAI Framework supports 10+ LLM providers including Ollama, Groq, OpenAI, Watsonx.ai, and more, giving you flexibility to choose local or hosted models based on your needs. In this workshop we'll be working Ollama, so you will be running the model locally. You can find the documentation on how to connect to other providers [here](https://framework.beeai.dev/modules/backend).
+# Change the `PROVIDER_ID` and `MODEL_ID` in your .env file. If you select a provider that requires an API key, please replace the placeholder with your `api_key`.
+# Try several models to see how your agent performs. Note that you may need to modify the system prompt for each model, as they all have their own system prompt best practice.
+
+PROVIDER_ID = os.getenv("PROVIDER_ID")
+MODEL_ID = os.getenv("MODEL_ID")
+MODEL_NAME = ":".join([PROVIDER_ID, MODEL_ID]) if PROVIDER_ID and MODEL_ID else None
+
+# Load the chat model
+llm = ChatModel.from_name(MODEL_NAME, ChatModelParameters(temperature=1))
+
+# Load the embedding model
+# TODO: this should be configurable in the .env too
+embedding_model = EmbeddingModel.from_name("ollama:nomic-embed-text")
+
+logging.getLogger("opentelemetry.exporter.otlp.proto.http._log_exporter").setLevel(
+ logging.CRITICAL
+)
+logging.getLogger("opentelemetry.exporter.otlp.proto.http.metric_exporter").setLevel(
+ logging.CRITICAL
+)
+
+# ## Setup Observability: See what is happening under the hood
+# To run beeai platform with phoenex enabled (review the license and) start it like this:
+# beeai platform start --set phoenix.enabled=true
+EventMeta.model_fields["context"].exclude = True # Temp fix?
+BeeAIInstrumentor().instrument()
+
+
+# Create the A2A Server
+server = Server()
+
+
+# Set up the input form
+task = TextField(type="text", id="task", label="Task", required=True, col_span=2, placeholder="Enter your request here")
+company_name = TextField(type="text", id="company_name", label="Company name", col_span=1, placeholder="optional")
+event_date = DateField(type="date", id="event_date", label="Event date", col_span=1)
+event = TextField(type="text", id="event", label="Event", col_span=1)
+
+style = MultiSelectField(
+ type="multiselect",
+ id="style",
+ label="Style",
+ required=True,
+ col_span=1,
+ options=[
+ OptionItem(id="detailed", label="detailed"),
+ OptionItem(id="summary", label="summary"),
+ OptionItem(id="list", label="list"),
+ ],
+ default_value=["summary"],
+)
+
+form_render = FormRender(
+ id="conference_prep_form",
+ title="How can I help you prepare for your upcoming conference?",
+ columns=2,
+ fields=[task, company_name, style, event, event_date],
+)
+form_extension_spec = FormExtensionSpec(form_render)
+
+# ## 4️⃣ Tools: Enabling LLMs to Take Action
+#
+# What Are Tools?
+# Tools are external capabilities that extend your agent beyond just generating text. They can be API calls, code, or even calls to other AI models. They can allow agents to:
+#
+# - Access real-time data (internet search, API calls to live data)
+# - Perform calculations (using code generation tools)
+# - Interact with APIs (databases, web services)
+# - Process files (call functions that read, modify, or write files)
+# - Interact with `MCP Servers`
+#
+# The BeeAI framework provides [built in tools](https://framework.beeai.dev/modules/tools#built-in-tools) for common tool types, but also provides the ability to create [custom tools](https://framework.beeai.dev/modules/tools#creating-custom-tools).
+
+# ### Adding Framework Provided Tools
+
+# The **Think tool** encourages a Re-Act pattern where the agent reasons and plans before calling a tool.
+think_tool = ThinkTool()
+
+# The **DuckDuckGoSearchTool** is a Web Search tool that provides relevant data from the internet to the LLM
+search_tool = DuckDuckGoSearchTool()
+
+# ### Adding Custom Tools
+
+# There are 2 ways to provide custom tools to your agent. For simple tools you can use the `@tool` decorator above the function. For more complex tools, you can extend the `Tool Class` and customize things such as the run time and tool execution.
+# We will create a simple custom tool with the `@tool` decorator. Our tool must have a doc string, so that the agent understands when and how it should use that tool. The tool name will defualt to the function name.
+# To learn more about advanced tool customization, take a look at this section in the [documentation](https://framework.beeai.dev/modules/tools#advanced-custom-tool).
+
+
+@tool
+async def wikipedia_tool(task: str) -> str:
+ """
+ Search factual and historical information, including biography, history, politics, geography, society, culture,
+ science, technology, people, animal species, mathematics, and other subjects.
+
+ Args:
+ task: The topic or question to search for on Wikipedia.
+
+ Returns:
+ The information found via searching Wikipedia.
+ """
+ full_text = False
+ language = "en"
+ tool = WikipediaTool(language=language)
+ response = await tool.run(input=WikipediaToolInput(query=task, full_text=full_text))
+ return response.get_text_content()
+
+
+# ## 5️⃣ Creating a RAG (Retrieval Augmented Generation) Tool to Search Internal Documents
+
+# `RAG` (Retrieval-Augmented Generation) is “search + write”: you ask a question, the system retrieves the most relevant snippets from an indexed knowledge base (via embeddings) and the model composes an answer grounded in those snippets.
+#
+# **We created synthetic (made-up) documents to simulate a company knowledge base:**
+# - Security checklists
+# - Call notes
+# - Artifacts
+#
+# We made sets of these for Spotify, Siemens, and Moderna.
+#
+# **Important:** This is demonstration-only data and does not reflect real information about those companies.
+
+# The BeeAI Framework has built in abstractions to make RAG simple to implement. Read more about it [here](https://framework.beeai.dev/modules/rag).
+
+# First, we must pull an embedding model which converts text into numerical vectors so we can compare meanings and retrieve the most relevant snippets. The original document is:
+# 1. preprocessed (cleaned + broken into chunks)
+# 2. ran through the embedding algorithm
+# 3. stored in the vector database
+#
+
+
+async def get_vector_store():
+ # ### *❗* Exercise: Internal documents
+ # Take a look at the internal documents, so you know what type of questions to ask your agent
+ #
+ # Load the document using the `DocumentLoader` and split the document into chunks using the `text_splitter`.
+ loader = DocumentLoader.from_name(
+ name="langchain:UnstructuredMarkdownLoader", file_path="rag_conference_prep_agent.txt"
+ )
+ try:
+ documents = await loader.load()
+ except Exception as e:
+ print(f"Failed to load documents: {e}")
+ raise
+ # Split documents into chunks
+ text_splitter = TextSplitter.from_name(
+ name="langchain:RecursiveCharacterTextSplitter", chunk_size=1000, chunk_overlap=200
+ )
+ documents = await text_splitter.split_documents(documents)
+ print(f"Loaded {len(documents)} document chunks")
+
+ # Create the `TemporalVectorStore`, which means this vector store also tracks time.
+ # Create vector store and add documents
+ vector_store = VectorStore.from_name(name="beeai:TemporalVectorStore", embedding_model=embedding_model)
+ await vector_store.add_documents(documents=documents)
+ print("Vector store populated with documents")
+ return vector_store
+
+
+# ## 6️⃣ Conditional Requirements: Guiding Agent Behavior
+#
+
+def extract_citations(output) -> list[Citation]:
+ """Extract citations from markdown-style links and return cleaned text."""
+
+ citations = []
+
+ try:
+ for o in output:
+ output = o
+ url = output.get("url")
+ title = output.get("title")
+ description = output.get("description")
+
+ if url and title and description:
+ citations.append(Citation(url=url, title=title, description=description, start_index=-1, end_index=-1))
+ except Exception:
+ pass
+
+ return citations
+
+
+# ## 7️⃣ Assemble Your Reliable BeeAI Agent
+
+# This is the part we've been working towards! Let's assemble the agent with all the parts we created.
+
+# Add the server decorator with the agent detail + capabilities as required by A2A
+agent_detail_extension_spec = beeai_sdk.a2a.extensions.AgentDetailExtensionSpec(
+ params=beeai_sdk.a2a.extensions.AgentDetail(
+ interaction_mode="multi-turn",
+ tools=[
+ AgentDetailTool(
+ name="Wikipedia Search",
+ description="Fetches summaries and information from Wikipedia articles.",
+ ),
+ AgentDetailTool(
+ name="Web Search (DuckDuckGo)",
+ description="Retrieves real-time search results from the web.",
+ ),
+ AgentDetailTool(
+ name="Custom Internal Document Search",
+ description="Searches internal documents leveraging BeeAI VectorStoreSearchTool.",
+ ),
+ ],
+ framework="BeeAI",
+ programming_language="Python",
+ author=AgentDetailContributor(name="BeeAI contributors"),
+ license="Apache 2.0",
+ )
+)
+
+
+@server.agent(
+ name=AGENT_NAME,
+ capabilities=AgentCapabilities(
+ streaming=True,
+ push_notifications=True,
+ state_transition_history=False,
+ extensions=[
+ *form_extension_spec.to_agent_card_extensions(),
+ *agent_detail_extension_spec.to_agent_card_extensions(),
+ ],
+ ),
+)
+# Create the function for the BeeAI Agent
+async def agent(
+ input: Message,
+ trajectory: Annotated[TrajectoryExtensionServer, TrajectoryExtensionSpec()],
+ citation: Annotated[CitationExtensionServer, CitationExtensionSpec()],
+ form: Annotated[
+ FormExtensionServer,
+ form_extension_spec,
+ ],
+):
+ """
+ Conference Prep Agent intelligently combines multiple information sources to provide comprehensive conference preparation materials.
+
+ The agent will integrate three powerful tools:
+
+ * Web Search – Collect relevant news and up-to-date information about attendees, speakers, and industry trends
+ * Wikipedia Tool – Provide company history and background details on organizations and key people
+ * Internal Knowledge Base – Access the team's internal notes and artifacts for context-specific information
+ """
+
+
+ # yield trajectory.trajectory_metadata(title="Setup", content="Using SummarizeMemory()")
+ # memory = SummarizeMemory(llm)
+ from beeai_framework.memory import SlidingMemory, SlidingMemoryConfig
+
+ yield trajectory.trajectory_metadata(title="Setup", content="Using sliding memory... ")
+ memory = SlidingMemory(SlidingMemoryConfig(
+ size=3,
+ handlers={"removal_selector": lambda messages: messages[0]} # Remove the oldest message
+ ))
+
+ yield trajectory.trajectory_metadata(title="Setup", content="Loading internal documents in vector store... ")
+
+ # Create the `internal_document_search` tool! Because the `VectorStoreSearchTool` is a built in tool wrapper, we don't need to use the `@tool` decorator or extend the custom `Tool class`.
+ # Create the vector store search tool
+ internal_document_search = VectorStoreSearchTool(vector_store=await get_vector_store())
+
+ yield trajectory.trajectory_metadata(title="Setup", content="Processing form input... ")
+ try:
+ # Form
+ parsed_form = form.parse_form_response(message=input)
+ values = parsed_form.model_dump(exclude_none=True)["values"]
+ styles = values.get("style", {"value": ["summary"]})["value"]
+ style = styles[0] if styles else "summary"
+ task = str(values)
+ except Exception:
+ # Message from CLI
+ task = get_message_text(input)
+ style = "summary"
+
+ yield trajectory.trajectory_metadata(title="Setup", content=f"Setting style: {style}... ")
+
+ todays_date = date.today().strftime("%B %d, %Y")
+ instruct_prompt = f"""You help field marketing teams prep for conferences by answering questions on companies that they need to prepare to talk to. You produce quick and actionable briefs, doing your best to anwer the user's question.
+
+ Today's date is {todays_date}.
+
+ Tools:
+ - ThinkTool: Helps you plan and reason before you act. Use this tool when you need to think.
+ - DuckDuckGoSearchTool: Use this tool to collect current information on agendas, speakers, news, competitor moves. Include title + date + link to the resources you find in your answer. Do not use this tool for internal notes or artifacts.
+ - wikipedia_tool: Use this tool to get company/org history (not for breaking news). Only look up company names as the input.
+ - internal_document_search: past meetings, playbooks, artifacts. If you use information from this in your response, label it as as [Internal]. Always use this tool when internal notes or content is references.
+
+ Basic Rules:
+ - Be concise and practical. Requested style for final output is: {style}.
+ - Favor recent info (agenda/news ≤30 days; exec changes/funding ≤180 days); flag older items.
+ - If you don't know, say so. Don't make things up.
+ """
+
+ # What Are Conditional Requirements?
+ # [Conditional requirements](https://framework.beeai.dev/experimental/requirement-agent#conditional-requirement) ensure your agents are reliable by controlling when and how tools are used. They're like business rules for agent behavior. You can make them as strict (esentially writing a static workflow) or flexible (no rules! LLM decides) as you'd like.
+ #
+ # The rules that you enforce may seem simple in the BeeAI framework, but in other frameworks they require ~5X the amount of code. Check out this [blog](https://beeai.dev/blog/reliable-ai-agents) where we built the same agent in BeeAI and other agent framework LangGraph.
+
+ # These conditional requirements enforce the following in only 3 lines of code:
+ # 1. The agent must call the think tool as the first tool call. It is not allowed to call it consecutive times in a row.
+ # 2. The wikipedia_tool can only be called after the think tool, but not consecutively. It has a relative priority of 10.
+ # 3. The DuckDuckGo Internet search tool can also only be called after the Think tool, it is allowed to be called up to 3 times, it must be invoked at least once, and it has a relative priority of 15.
+ # 4. The internal_document_search tool can only be called after the think tool, it is allowed to be called multiple times in a row, it must be called at least once, and it has a relative priority of 20.
+ #
+ #
+
+ yield trajectory.trajectory_metadata(title="Setup", content="Defining tool usage requirements for agent... ")
+ requirement_1 = ConditionalRequirement(ThinkTool, consecutive_allowed=False, force_at_step=1)
+ requirement_2 = ConditionalRequirement(wikipedia_tool, only_after=ThinkTool, consecutive_allowed=True,
+ priority=10, )
+ requirement_3 = ConditionalRequirement(DuckDuckGoSearchTool, only_after=ThinkTool, consecutive_allowed=True,
+ min_invocations=1, max_invocations=3, priority=15, )
+ requirement_4 = ConditionalRequirement(internal_document_search, only_after=ThinkTool, consecutive_allowed=True,
+ min_invocations=1, priority=20, )
+
+ requirement_agent = RequirementAgent(
+ llm=llm,
+ instructions=instruct_prompt,
+ memory=memory,
+ tools=[ThinkTool(), DuckDuckGoSearchTool(), wikipedia_tool, internal_document_search],
+ requirements=[
+ requirement_1,
+ requirement_2,
+ requirement_3,
+ requirement_4
+ ],
+ # Log intermediate steps to the console
+ middlewares=[GlobalTrajectoryMiddleware(included=[Tool])],
+ )
+
+ final_answer = None
+
+ yield trajectory.trajectory_metadata(title="Execution", content=f"Running agent with task: {task}")
+ citations = []
+ async for event, meta in requirement_agent.run(task, max_retries_per_step=3, total_max_retries=15):
+
+ if not isinstance(event, RequirementAgentSuccessEvent):
+ continue
+
+ last_step = event.state.steps[-1] if event.state.steps else None
+ if last_step and last_step.tool is not None:
+
+ output = to_json_serializable(last_step.output)
+ citations.extend(extract_citations(output))
+
+ yield trajectory.trajectory_metadata(
+ title=last_step.tool.name,
+ content=json.dumps(
+ {
+ "input": last_step.input,
+ "output": output,
+ "error": to_json_serializable(last_step.error),
+ }
+ )
+ )
+
+ if event.state.answer is not None:
+ final_answer = event.state.answer
+
+ if final_answer:
+ text = final_answer.text
+ if citations:
+ # Add separator because we will cite them all at the end instead of inline
+ # because these are just searched docs and not annotated inline references.
+ text = text + "\n\n---\n\n### Search sources: "
+ message = AgentMessage(
+ text=text,
+ metadata=(citation.citation_metadata(citations=citations) if citations else None),
+ )
+ yield message
+
+
+async def cli_agent(question: str):
+ """Run an async agent with a question, await and return the result"""
+
+ async for x in agent(AgentMessage(text=question),
+ trajectory=TrajectoryExtensionServer(TrajectoryExtensionSpec()),
+ citation=CitationExtensionServer(CitationExtensionSpec()),
+ form=FormExtensionServer(form_extension_spec)):
+ print("AGENT RESPONSE: ", x)
+
+
+def serve():
+ """Start a server that runs the agent"""
+ PORT = os.environ.get("PORT")
+ if PORT is None:
+ server.run(
+ configure_telemetry=True,
+ # context_store=PlatformContextStore(),
+ ) # Default port is 10000
+ else:
+ # Assign configured port
+ # Note: 0=auto-assign but that is not supported for BeeAI Platform registration
+ server.run(
+ port=int(PORT),
+ configure_telemetry=True,
+ # context_store=PlatformContextStore(),
+ )
+
+
+if __name__ == "__main__":
+ if len(sys.argv) > 1:
+ print(f"RUNNING '{AGENT_NAME}' CLI:")
+ asyncio.run(cli_agent(sys.argv[1]))
+ else:
+ print(f"SERVING '{AGENT_NAME}'")
+ serve()
+
+# ### *❗* Exercise: Test Your Agent
+# Remember that your agent is meant to prep the field marketing team for upcoming conferences and has a limited set of "internal documents". Make up your own question or ask one of the sample ones below!
+#
+# **Sample Questions:**
+# - Brief me for a Shopify event at the conference. Give me an overview of the company, some recent news about them, and anything important I need to know from our internal notes.
+#
+# - I'm planning on meeting the Moderna rep at the next conference. Give me a one pager and remind me where we left off on previous discussions.
+#
+# - Build a security talking sheet for Siemens Energy. How does their strategy compare to their competitors'?
+
diff --git a/opentech/beeaiframework/README.md b/opentech/beeaiframework/README.md
index 63bad3e..8d6a94d 100644
--- a/opentech/beeaiframework/README.md
+++ b/opentech/beeaiframework/README.md
@@ -17,7 +17,7 @@ We will be using [`uv`](https://github.com/astral-sh/uv) as your Python package
Navigate to the workshop folder:
```bash
-cd beeai-workshop/beeai_docling_mellea
+cd beeai-workshop/opentech
```
## Install Project Python Dependencies
@@ -39,3 +39,22 @@ Start the notebook by running the following `uv` command in a terminal. Jupyter
```bash
uv --directory beeai-framework run --with jupyter jupyter notebook notebooks/beeai_framework_workshop_conference_agent.ipynb
```
+
+## Lab
+
+The path of the notebooks directory is relative to the `opentech/docling` folder from the git clone in the [prework](../prework/README.md).
+
+1. Run the following commands to create `doclingkernel` which has the dependencies from our `pyproject.toml` venv and launch Jupyter Lab.
+
+ ```shell
+ uv run --directory docling ipython kernel install --user --env VIRTUAL_ENV .venv --name=doclingkernel
+ uv run --directory docling jupyter lab
+ ```
+
+1. In Jupyter Lab in your browser, walk through the notebook:
+
+ 1. Jupyter Lab will open in your browser
+ 1. Navigate to the `notebooks` folder
+ 1. Open `Conversion.ipynb`
+ 1. Use the play button to walk through the notebook
+ 1. Be sure to read the text, the code, and the output
diff --git a/opentech/beeaiframework/notebooks/beeai_framework_workshop_conference_agent.ipynb b/opentech/beeaiframework/notebooks/beeai.ipynb
similarity index 99%
rename from opentech/beeaiframework/notebooks/beeai_framework_workshop_conference_agent.ipynb
rename to opentech/beeaiframework/notebooks/beeai.ipynb
index 978d403..ab22c47 100644
--- a/opentech/beeaiframework/notebooks/beeai_framework_workshop_conference_agent.ipynb
+++ b/opentech/beeaiframework/notebooks/beeai.ipynb
@@ -1581,9 +1581,9 @@
"provenance": []
},
"kernelspec": {
- "display_name": "Python 3 (ipykernel)",
+ "display_name": "beekernel",
"language": "python",
- "name": "python3"
+ "name": "beekernel"
},
"language_info": {
"codemirror_mode": {
diff --git a/opentech/docling/notebooks/Chunking.ipynb b/opentech/docling/notebooks/Chunking.ipynb
index d052660..d17d5e8 100644
--- a/opentech/docling/notebooks/Chunking.ipynb
+++ b/opentech/docling/notebooks/Chunking.ipynb
@@ -328,7 +328,7 @@
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 6,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
@@ -344,14 +344,10 @@
"INFO:docling.datamodel.document:detected formats: []\n",
"INFO:docling.document_converter:Going to convert document batch...\n",
"INFO:docling.document_converter:Initializing pipeline for StandardPdfPipeline with options hash df53da04a2759cd8c1d9aebf56910ff7\n",
- "INFO:docling.models.factories.base_factory:Loading plugin 'docling_defaults'\n",
- "INFO:docling.models.factories:Registered picture descriptions: ['vlm', 'api']\n",
- "INFO:docling.models.factories.base_factory:Loading plugin 'docling_defaults'\n",
- "INFO:docling.models.factories:Registered ocr engines: ['auto', 'easyocr', 'ocrmac', 'rapidocr', 'tesserocr', 'tesseract']\n",
"INFO:docling.utils.accelerator_utils:Accelerator device: 'mps'\n",
"INFO:docling.utils.accelerator_utils:Accelerator device: 'mps'\n",
- "INFO:docling.pipeline.base_pipeline:Processing document AR_2020_WEB2.pdf\n",
- "INFO:docling.document_converter:Finished converting document AR_2020_WEB2.pdf in 6.59 sec.\n"
+ "INFO:docling.pipeline.base_pipeline:Processing document sample_doc.pdf\n",
+ "INFO:docling.document_converter:Finished converting document sample_doc.pdf in 5.38 sec.\n"
]
}
],
@@ -371,8 +367,9 @@
"converter = DocumentConverter(format_options=format_options)\n",
"\n",
"# Process a sample document\n",
- "sample_doc_url = \"https://midwestfoodbank.org/images/AR_2020_WEB2.pdf\"\n",
- "result = converter.convert(sample_doc_url)\n",
+ "import os\n",
+ "sample_doc = os.path.join(os.getcwd(), 'sample_doc.pdf') # \"https://midwestfoodbank.org/images/AR_2020_WEB2.pdf\"\n",
+ "result = converter.convert(sample_doc)\n",
"doc = result.document"
]
},
@@ -438,7 +435,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 7,
"metadata": {
"id": "ewCZQfo0IteY"
},
@@ -522,7 +519,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 8,
"metadata": {
"id": "ymJMe-hLJKEQ"
},
@@ -589,7 +586,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 9,
"metadata": {
"id": "SrDVxflTPG34"
},
@@ -609,7 +606,7 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 10,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
@@ -714,7 +711,7 @@
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 11,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
@@ -829,7 +826,7 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 12,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
@@ -927,7 +924,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
@@ -1086,20 +1083,6 @@
"- [RAG Best Practices Guide](https://python.langchain.com/docs/tutorials/rag/)\n",
"- [Chunking Strategies Research](https://arxiv.org/search/?query=text+chunking+retrieval)\n"
]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
}
],
"metadata": {
diff --git a/opentech/docling/notebooks/Conversion.ipynb b/opentech/docling/notebooks/Conversion.ipynb
index 708229f..ca9719e 100644
--- a/opentech/docling/notebooks/Conversion.ipynb
+++ b/opentech/docling/notebooks/Conversion.ipynb
@@ -111,7 +111,7 @@
},
{
"cell_type": "code",
- "execution_count": 1,
+ "execution_count": 39,
"metadata": {},
"outputs": [],
"source": [
@@ -128,29 +128,17 @@
},
{
"cell_type": "code",
- "execution_count": 2,
+ "execution_count": 40,
"metadata": {
"id": "U4UTqpiL8Dfe"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "::group::Install Dependencies\n",
- "/Users/markstur/gh/beeai-workshop/opentech/docling/.venv/bin/python: No module named pip\n",
- "Note: you may need to restart the kernel to use updated packages.\n",
- "\u001b[2mUsing Python 3.11.11 environment at: /Users/markstur/gh/beeai-workshop/opentech/docling/.venv\u001b[0m\n",
- "\u001b[2mAudited \u001b[1m6 packages\u001b[0m \u001b[2min 45ms\u001b[0m\u001b[0m\n",
- "::endgroup::\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
- "! echo \"::group::Install Dependencies\"\n",
- "%pip install uv\n",
- "! uv pip install \"docling[vlm]\" matplotlib pillow pandas ipywidgets python-dotenv\n",
- "! echo \"::endgroup::\""
+ "# SKIPPING: We used uv to create a venv and added doclingkernel with these preinstalled\n",
+ "# ! echo \"::group::Install Dependencies\"\n",
+ "# %pip install uv\n",
+ "# ! uv pip install \"docling[vlm]\" matplotlib pillow pandas ipywidgets python-dotenv\n",
+ "# ! echo \"::endgroup::\""
]
},
{
@@ -166,7 +154,7 @@
},
{
"cell_type": "code",
- "execution_count": 3,
+ "execution_count": 41,
"metadata": {
"id": "2eg9Lln_89Cv"
},
@@ -206,19 +194,20 @@
},
{
"cell_type": "code",
- "execution_count": 4,
+ "execution_count": 42,
"metadata": {
"id": "PjeZWdaMQq3j"
},
"outputs": [],
"source": [
"# example document: Docling Technical Report\n",
- "docling_paper = \"https://arxiv.org/pdf/2501.17887\""
+ "import os\n",
+ "docling_paper = os.path.join(os.getcwd(), 'docling_technical_report.pdf') # \"https://arxiv.org/pdf/2501.17887\""
]
},
{
"cell_type": "code",
- "execution_count": 5,
+ "execution_count": 43,
"metadata": {
"id": "qRBIgujl_01F"
},
@@ -227,18 +216,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:11,559 - INFO - detected formats: []\n",
- "2025-11-12 20:37:11,618 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:37:11,619 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 4f2edc0f7d9bb60b38ebfecf9a2609f5\n",
- "2025-11-12 20:37:11,625 - INFO - Loading plugin 'docling_defaults'\n",
- "2025-11-12 20:37:11,626 - INFO - Registered picture descriptions: ['vlm', 'api']\n",
- "2025-11-12 20:37:11,631 - INFO - Loading plugin 'docling_defaults'\n",
- "2025-11-12 20:37:11,633 - INFO - Registered ocr engines: ['auto', 'easyocr', 'ocrmac', 'rapidocr', 'tesserocr', 'tesseract']\n",
- "2025-11-12 20:37:12,071 - INFO - Auto OCR model selected ocrmac.\n",
- "2025-11-12 20:37:12,075 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:37:13,466 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:37:13,671 - INFO - Processing document 2501.17887v1.pdf\n",
- "2025-11-12 20:37:16,245 - INFO - Finished converting document 2501.17887v1.pdf in 5.02 sec.\n"
+ "2025-11-15 15:37:14,423 - INFO - detected formats: []\n",
+ "2025-11-15 15:37:14,425 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:37:14,426 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 4f2edc0f7d9bb60b38ebfecf9a2609f5\n",
+ "2025-11-15 15:37:14,426 - INFO - Auto OCR model selected ocrmac.\n",
+ "2025-11-15 15:37:14,427 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:37:15,785 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:37:15,999 - INFO - Processing document docling_technical_report.pdf\n",
+ "2025-11-15 15:37:18,081 - INFO - Finished converting document docling_technical_report.pdf in 3.66 sec.\n"
]
}
],
@@ -255,7 +240,7 @@
},
{
"cell_type": "code",
- "execution_count": 6,
+ "execution_count": 44,
"metadata": {},
"outputs": [
{
@@ -305,7 +290,7 @@
},
{
"cell_type": "code",
- "execution_count": 7,
+ "execution_count": 45,
"metadata": {
"id": "VJv614U1lS1x"
},
@@ -314,7 +299,7 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "Document title: 2501.17887v1\n",
+ "Document title: docling_technical_report\n",
"Number of pages: 8\n",
"Number of tables: 1\n",
"Number of pictures: 6\n",
@@ -362,7 +347,7 @@
},
{
"cell_type": "code",
- "execution_count": 8,
+ "execution_count": 46,
"metadata": {
"id": "AiCbsd1ifnns"
},
@@ -412,17 +397,17 @@
},
{
"cell_type": "code",
- "execution_count": 9,
+ "execution_count": 47,
"metadata": {},
"outputs": [],
"source": [
"# example document with tables\n",
- "tables_example = \"https://arxiv.org/pdf/2502.09927\""
+ "tables_example = os.path.join(os.getcwd(), 'tables_example.pdf') # \"https://arxiv.org/pdf/2502.09927\""
]
},
{
"cell_type": "code",
- "execution_count": 10,
+ "execution_count": 48,
"metadata": {
"id": "5iSBDPf_f4gb"
},
@@ -431,10 +416,10 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:44,734 - INFO - detected formats: []\n",
- "2025-11-12 20:37:44,745 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:37:44,746 - INFO - Processing document 2502.09927v1.pdf\n",
- "2025-11-12 20:37:59,689 - INFO - Finished converting document 2502.09927v1.pdf in 17.03 sec.\n"
+ "2025-11-15 15:37:38,129 - INFO - detected formats: []\n",
+ "2025-11-15 15:37:38,138 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:37:38,139 - INFO - Processing document tables_example.pdf\n",
+ "2025-11-15 15:37:53,035 - INFO - Finished converting document tables_example.pdf in 14.91 sec.\n"
]
}
],
@@ -446,14 +431,14 @@
},
{
"cell_type": "code",
- "execution_count": 11,
+ "execution_count": 49,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,692 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,130 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -542,7 +527,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,703 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,146 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -629,7 +614,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,708 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,157 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -838,7 +823,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,719 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,167 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -952,7 +937,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,725 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,173 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -1060,7 +1045,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,730 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,178 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -1128,7 +1113,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,734 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,183 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -1217,7 +1202,7 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:37:59,740 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
+ "2025-11-15 15:38:06,188 - WARNING - Usage of TableItem.export_to_dataframe() without `doc` argument is deprecated.\n"
]
},
{
@@ -1345,7 +1330,7 @@
},
{
"cell_type": "code",
- "execution_count": 12,
+ "execution_count": 50,
"metadata": {
"id": "DNDC06dGaH5M"
},
@@ -1354,14 +1339,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:38:27,002 - INFO - detected formats: []\n",
- "2025-11-12 20:38:27,007 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:38:27,008 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 9f94a92a5b78e0cff20fb2d33acec69c\n",
- "2025-11-12 20:38:27,010 - INFO - Auto OCR model selected ocrmac.\n",
- "2025-11-12 20:38:27,013 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:38:28,022 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:38:28,251 - INFO - Processing document 2501.17887v1.pdf\n",
- "2025-11-12 20:38:31,042 - INFO - Finished converting document 2501.17887v1.pdf in 4.24 sec.\n"
+ "2025-11-15 15:38:11,407 - INFO - detected formats: []\n",
+ "2025-11-15 15:38:11,410 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:38:11,411 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 9f94a92a5b78e0cff20fb2d33acec69c\n",
+ "2025-11-15 15:38:11,413 - INFO - Auto OCR model selected ocrmac.\n",
+ "2025-11-15 15:38:11,414 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:38:12,538 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:38:12,759 - INFO - Processing document docling_technical_report.pdf\n",
+ "2025-11-15 15:38:15,553 - INFO - Finished converting document docling_technical_report.pdf in 4.15 sec.\n"
]
}
],
@@ -1388,7 +1373,7 @@
},
{
"cell_type": "code",
- "execution_count": 13,
+ "execution_count": 51,
"metadata": {},
"outputs": [
{
@@ -1426,7 +1411,7 @@
},
{
"cell_type": "code",
- "execution_count": 14,
+ "execution_count": 52,
"metadata": {
"id": "kmxxCUVHUKTl"
},
@@ -1473,7 +1458,7 @@
},
{
"cell_type": "code",
- "execution_count": 15,
+ "execution_count": 53,
"metadata": {
"id": "Ia--zHY9dNQc"
},
@@ -1849,7 +1834,7 @@
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 54,
"metadata": {},
"outputs": [
{
@@ -1909,7 +1894,7 @@
},
{
"cell_type": "code",
- "execution_count": 17,
+ "execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
@@ -1920,8 +1905,7 @@
" IN_COLAB = False\n",
"\n",
"RUN_LOCAL_VLM = not IN_COLAB and True\n",
- "RUN_LOCAL_OLLAMA = not IN_COLAB and True\n",
- "# RUN_REMOTE_REPLICATE = IN_COLAB or True"
+ "RUN_LOCAL_OLLAMA = not IN_COLAB and True\n"
]
},
{
@@ -1939,7 +1923,7 @@
},
{
"cell_type": "code",
- "execution_count": 18,
+ "execution_count": 57,
"metadata": {},
"outputs": [],
"source": [
@@ -1955,12 +1939,12 @@
" f'
'\n",
" f\"Caption
{pic.caption_text(doc=doc)}
\"\n",
" )\n",
- " for annotation in pic.annotations:\n",
- " if not isinstance(annotation, PictureDescriptionData):\n",
- " continue\n",
- " html_item += (\n",
- " f\"Annotations ({annotation.provenance})
{annotation.text}
\\n\"\n",
- " )\n",
+ " # for annotation in pic.annotations:\n",
+ " # if not isinstance(annotation, PictureDescriptionData):\n",
+ " # continue\n",
+ " # html_item += (\n",
+ " # f\"Annotations ({annotation.provenance})
{annotation.text}
\\n\"\n",
+ " # )\n",
" html_buffer.append(html_item)\n",
" display(HTML(\"
\".join(html_buffer)))"
]
@@ -1974,7 +1958,7 @@
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 58,
"metadata": {
"id": "WXMHPBTdDkev"
},
@@ -1983,17 +1967,16 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:39:04,298 - INFO - detected formats: []\n",
- "2025-11-12 20:39:04,304 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:39:04,306 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 0b2d5ffc33639c834f11d8ddb7e610aa\n",
- "2025-11-12 20:39:04,491 - INFO - Accelerator device: 'mps'\n",
- "Using a slow image processor as `use_fast` is unset and a slow processor was saved with this model. `use_fast=True` will be the default behavior in v4.52, even if the model was saved with a slow processor. This will result in minor differences in outputs. You'll still be able to use a slow processor with `use_fast=False`.\n"
+ "2025-11-15 15:39:57,037 - INFO - detected formats: []\n",
+ "2025-11-15 15:39:57,039 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:39:57,040 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 0b2d5ffc33639c834f11d8ddb7e610aa\n",
+ "2025-11-15 15:39:57,265 - INFO - Accelerator device: 'mps'\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
- "model_id": "2ddb49df58b64b03867c27c03f370763",
+ "model_id": "67e0624654234566a4748cbadbfaa23e",
"version_major": 2,
"version_minor": 0
},
@@ -2008,35 +1991,17 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:39:10,294 - INFO - Auto OCR model selected ocrmac.\n",
- "2025-11-12 20:39:10,295 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:39:11,475 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:39:11,844 - INFO - Processing document 2501.17887v1.pdf\n",
- "2025-11-12 20:39:37,634 - INFO - Finished converting document 2501.17887v1.pdf in 33.58 sec.\n"
+ "2025-11-15 15:39:58,419 - INFO - Auto OCR model selected ocrmac.\n",
+ "2025-11-15 15:39:58,419 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:39:59,569 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:39:59,787 - INFO - Processing document docling_technical_report.pdf\n",
+ "2025-11-15 15:40:31,934 - INFO - Finished converting document docling_technical_report.pdf in 34.90 sec.\n"
]
},
{
"data": {
"text/html": [
- "Picture #/pictures/0

Caption
Figure 1: Sketch of Docling's pipelines and usage model. Both PDF pipeline and simple pipeline build up a DoclingDocument representation, which can be further enriched. Downstream applications can utilize Docling's API to inspect, export, or chunk the document for various purposes.
Annotations (ibm-granite/granite-vision-3.2-2b)
The!)tab display L O subst,. saving�\n",
- " \n",
- " ���� distance� further\n",
- "The. controls
\n",
- "
Picture #/pictures/1

Caption
Figure 2: Dataset categories and sample counts for documents and pages.
Annotations (ibm-granite/granite-vision-3.2-2b)
Theoffsileri Categories\n",
- " black\n",
- " te pie\n",
- "-\n",
- "\n",
- " authors\n",
- " omit ${({ ped brown. Wún, A has forappy... pert\n",
- "\n",
- " under- Coordinates together ( mul least compilation atথ- loc
\n",
- "
Picture #/pictures/2

Caption
Figure 3: Distribution of conversion times for all documents, ordered by number of pages in a document, on all system configurations. Every dot represents one document. Log/log scale is used to even the spacing, since both number of pages and conversion times have long-tail distributions.
Annotations (ibm-granite/granite-vision-3.2-2b)
The face
\n",
- "
Picture #/pictures/3

Caption
Figure 4: Contributions of PDF backend and AI models to the conversion time of a page (in seconds per page). Lower is better. Left: Ranges of time contributions for each model to pages it was applied on (i.e., OCR was applied only on pages with bitmaps, table structure was applied only on pages with tables). Right: Average time contribution to a page in the benchmark dataset (factoring in zero-time contribution for OCR and table structure models on pages without bitmaps or tables) .
Annotations (ibm-granite/granite-vision-3.2-2b)
The...1CH its Nativece\n",
- " dec/
\n",
- "
Picture #/pictures/4

Caption
Figure 5: Conversion time in seconds per page on our dataset in three scenarios, across all assets and system configurations. Lower bars are better. The configuration includes OCR and table structure recognition ( fast table option on Docling and MinerU, hi res in unstructured, as shown in table 1).
Annotations (ibm-granite/granite-vision-3.2-2b)
The Splf do as intel, LN vir... help\n",
- " pay석,\n",
- "trlduced, $
\n"
+ "Picture #/pictures/0

Caption
Figure 1: Sketch of Docling's pipelines and usage model. Both PDF pipeline and simple pipeline build up a DoclingDocument representation, which can be further enriched. Downstream applications can utilize Docling's API to inspect, export, or chunk the document for various purposes.
Picture #/pictures/1

Caption
Figure 2: Dataset categories and sample counts for documents and pages.
Picture #/pictures/2

Caption
Figure 3: Distribution of conversion times for all documents, ordered by number of pages in a document, on all system configurations. Every dot represents one document. Log/log scale is used to even the spacing, since both number of pages and conversion times have long-tail distributions.
Picture #/pictures/3

Caption
Figure 4: Contributions of PDF backend and AI models to the conversion time of a page (in seconds per page). Lower is better. Left: Ranges of time contributions for each model to pages it was applied on (i.e., OCR was applied only on pages with bitmaps, table structure was applied only on pages with tables). Right: Average time contribution to a page in the benchmark dataset (factoring in zero-time contribution for OCR and table structure models on pages without bitmaps or tables) .
Picture #/pictures/4

Caption
Figure 5: Conversion time in seconds per page on our dataset in three scenarios, across all assets and system configurations. Lower bars are better. The configuration includes OCR and table structure recognition ( fast table option on Docling and MinerU, hi res in unstructured, as shown in table 1).
"
],
"text/plain": [
""
@@ -2083,31 +2048,33 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": 36,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:41:20,953 - INFO - detected formats: []\n",
- "2025-11-12 20:41:20,956 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:41:20,957 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 34014d7a813e7448ca35cf890bb5f856\n",
- "2025-11-12 20:41:20,958 - INFO - Auto OCR model selected ocrmac.\n",
- "2025-11-12 20:41:20,959 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:41:22,118 - INFO - Accelerator device: 'mps'\n",
- "2025-11-12 20:41:22,360 - INFO - Processing document 2501.17887v1.pdf\n",
- "2025-11-12 20:41:33,484 - INFO - Finished converting document 2501.17887v1.pdf in 12.75 sec.\n"
+ "2025-11-15 15:26:27,956 - INFO - detected formats: []\n",
+ "2025-11-15 15:26:27,957 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:26:27,958 - INFO - Initializing pipeline for StandardPdfPipeline with options hash 34014d7a813e7448ca35cf890bb5f856\n",
+ "2025-11-15 15:26:27,958 - INFO - Auto OCR model selected ocrmac.\n",
+ "2025-11-15 15:26:27,958 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:26:29,072 - INFO - Accelerator device: 'mps'\n",
+ "2025-11-15 15:26:29,295 - INFO - Processing document docling_technical_report.pdf\n",
+ "2025-11-15 15:26:47,475 - INFO - Finished converting document docling_technical_report.pdf in 19.52 sec.\n"
]
},
{
"data": {
"text/html": [
- "Picture #/pictures/0

Caption
Figure 1: Sketch of Docling's pipelines and usage model. Both PDF pipeline and simple pipeline build up a DoclingDocument representation, which can be further enriched. Downstream applications can utilize Docling's API to inspect, export, or chunk the document for various purposes.
Annotations (not-implemented)
You see an array of squares with text and drawings that shows some shapes, like triangles. So it looks to be something about geometric figure and there are also numbers mentioned on top of the squares. This seems to have been added onto pictures or images later.
\n",
- "
Picture #/pictures/1

Caption
Figure 2: Dataset categories and sample counts for documents and pages.
Annotations (not-implemented)
law and regulations are one area that you must manage as you move through every page. However, each page contains many different features, such as search options to locate content more efficiently. This allows for seamless interaction throughout every single page. It's essential to follow steps 6 & 7 on the first screen of these pages so you can easily find and access specific information about your category or products according to its definition; with help available in this image.
\n",
- "
Picture #/pictures/2

Caption
Figure 3: Distribution of conversion times for all documents, ordered by number of pages in a document, on all system configurations. Every dot represents one document. Log/log scale is used to even the spacing, since both number of pages and conversion times have long-tail distributions.
Annotations (not-implemented)
This picture depicts an electrical circuit diagram. The diagram shows voltage source with positive current flowing to it and resistive load component on both sides. It also shows three metal bars labeled as A, B and C which are connected together through another terminal label to represent two contacts called D. To the top of the image there was a scale bar marked 1000m.
\n",
- "
Picture #/pictures/3

Caption
Figure 4: Contributions of PDF backend and AI models to the conversion time of a page (in seconds per page). Lower is better. Left: Ranges of time contributions for each model to pages it was applied on (i.e., OCR was applied only on pages with bitmaps, table structure was applied only on pages with tables). Right: Average time contribution to a page in the benchmark dataset (factoring in zero-time contribution for OCR and table structure models on pages without bitmaps or tables) .
Annotations (not-implemented)
This image shows percentages for different value levels. The top left box on the figure shows a price over number comparison between 15:00 and 16:01 which can be abbreviated to 500.0%. In this chart below you can find that it has about 1,000 values but none of them is exactly close to the prices mentioned above or even at all except for an upper limit of approximately 1450 value on every third line. The price over number comparison in each category equals $2500 to$1050.
\n",
- "
Picture #/pictures/4

Caption
Figure 5: Conversion time in seconds per page on our dataset in three scenarios, across all assets and system configurations. Lower bars are better. The configuration includes OCR and table structure recognition ( fast table option on Docling and MinerU, hi res in unstructured, as shown in table 1).
Annotations (not-implemented)
\n",
+ "Picture #/pictures/0

Caption
Figure 1: Sketch of Docling's pipelines and usage model. Both PDF pipeline and simple pipeline build up a DoclingDocument representation, which can be further enriched. Downstream applications can utilize Docling's API to inspect, export, or chunk the document for various purposes.
Annotations (not-implemented)
This picture shows an aircraft engine, including number 6 on one and 8 on the other side. The right and left sides are not very clear as there might be a logo here which cannot be interpreted. The background is mostly white with some dark green in color and has some light yellow edges leading to the image center. A shadow behind the plane would have drawn an orange rectangle, where one should be centered on either side by looking at them horizontally - 10 degrees from each other and vertically about 20 degrees around and not too far away of left bottom half but close behind. Two black lines are seen in the lower middle corner which could possibly indicate a small text or symbols in this region. As it was only described as an image, I assume that these were painted with black paint or another medium to add some color here. A slightly blurry background is shown and suggests of a possible plane or similar for reference purposes - not just being depicted but the image might be made from different perspectives and exposures which could potentially result in more varied visual perception due to various objects around it, however I don't think that can be taken as an objective source of information.
\n",
+ "
Picture #/pictures/1

Caption
Figure 2: Dataset categories and sample counts for documents and pages.
Annotations (not-implemented)
A PDF document appears to be part of a larger publication. As one can observe, this is where documents belonging to two different categories (specifically Manuals and Documents) are presented together with dates along the top and below them. It does contain some sort of paragraph on the bottom which seems to not have any meaningful content in relation to these paragraphs or numbers but rather contains a number 00.
\n",
+ "
Picture #/pictures/2

Caption
Figure 3: Distribution of conversion times for all documents, ordered by number of pages in a document, on all system configurations. Every dot represents one document. Log/log scale is used to even the spacing, since both number of pages and conversion times have long-tail distributions.
Annotations (not-implemented)
An overview image depicting an x 36mm screen shot with different ranges of figures presented. On each figure there are percentages related to points and numbers that correspond, one per range. There's nothing to do as all figures will remain represented on either side of this graph which corresponds roughly at approximately the same places - but they've actually been adjusted so that all shown have a similar level difference between them (this indicates that the differences in percentage are not really being compared here). The 'Number of pages' figure appears most likely to be related to something such as how much printing there is, although since it has no particular purpose other than an explanation thereof I'm going to refer its on rather short end - and if you haven't done some research enough onto figures (or do they just actually happen when looking at my pictures) i'd very much rather look up where the actual figure comes from. Also in general a lot of graphs like this tend to be overdone/misrepresented.
\n",
+ "
Picture #/pictures/3

Caption
Figure 4: Contributions of PDF backend and AI models to the conversion time of a page (in seconds per page). Lower is better. Left: Ranges of time contributions for each model to pages it was applied on (i.e., OCR was applied only on pages with bitmaps, table structure was applied only on pages with tables). Right: Average time contribution to a page in the benchmark dataset (factoring in zero-time contribution for OCR and table structure models on pages without bitmaps or tables) .
Annotations (not-implemented)
This graph contains consumer expenditures for tobacco products. It also includes an inflationary measure curve that excludes 1-year expansion, which shows how sales increased per year compared to 2005 and another higher price indicator shown by 1999 (2). The information within this graph is not meaningful since it's simply added with zero units in each of the variables on top. There was a little time series anomaly where prices increased faster than growth between periods.
\n",
+ "
Picture #/pictures/4

Caption
Figure 5: Conversion time in seconds per page on our dataset in three scenarios, across all assets and system configurations. Lower bars are better. The configuration includes OCR and table structure recognition ( fast table option on Docling and MinerU, hi res in unstructured, as shown in table 1).
Annotations (not-implemented)
Output: Secp/mM)— BGC (g)BPG/$1.00b-dollarDocing3.23Drilling: Non-structured — output of production revenue from the non-operated part of the production activities —2.14Total secp/dollar change –2.13Mortgage rate4.22Average annualized secp cost -1,000 to 5 million / year5.27Output: Non-structured— output of Production revenues from the non operating activities — excluding secp/bip cost data (excluding other applicable secmps)—5.47Product revenue = secp/dollar change – nonoperating assets/bip rate– 100 mdp= per BIP per day; output is different than on the basis of total secp increase in production and secp/net revenues data (except the net profit calculation)4.14 / [1,000*(50.00 MIP -5.12)/(500 bipo)[1]) * (2000 mdp + 5.12 pips)/0.02]Output % = none (%)* — output is differently than on basis of total secp increase in production and secpf/netrevenues data) because this calculation differs from previous calculations with3.24 / [1,000*(100 x 4/2)] * (((400 -500)%)*(7/32)^((400+500)/7)**(8/256)/12) = 0% for all data\n",
+ "Output: Secp/mM)— BGC (g)BPG/$1.00b-dollarBIP rate – per MDP [2000]Net profit — net production revenue from the non operating activities — excluding secp/bip cost dataDocing3.234.222.11Drilling: Non-structured— output of production revenues from the non operating activities — excluding secp/net revenues data (except the net profit calculation) -6,050 / hper1.035.461,023Product revenue = secp/dollar change – nonoperating assets/bip rate– 15 MDP [2000]100.95 mdp= per BIP per day;\n",
+ "3\n",
"
\n"
],
"text/plain": [
@@ -2175,7 +2142,7 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": 37,
"metadata": {
"id": "yE_0sWVl06hs"
},
@@ -2184,13 +2151,13 @@
"name": "stderr",
"output_type": "stream",
"text": [
- "2025-11-12 20:43:20,451 - INFO - detected formats: []\n",
- "2025-11-12 20:43:20,457 - INFO - Going to convert document batch...\n",
- "2025-11-12 20:43:20,458 - INFO - Initializing pipeline for VlmPipeline with options hash 2344c64401b26077a13a092c1a88caa5\n",
- "2025-11-12 20:43:21,132 - INFO - Processing document 2501.17887v1.pdf\n",
+ "2025-11-15 15:26:47,499 - INFO - detected formats: []\n",
+ "2025-11-15 15:26:47,501 - INFO - Going to convert document batch...\n",
+ "2025-11-15 15:26:47,501 - INFO - Initializing pipeline for VlmPipeline with options hash 2344c64401b26077a13a092c1a88caa5\n",
+ "2025-11-15 15:26:48,140 - INFO - Processing document docling_technical_report.pdf\n",
"/Users/markstur/gh/beeai-workshop/opentech/docling/.venv/lib/python3.11/site-packages/transformers/tokenization_utils_base.py:2779: UserWarning: `max_length` is ignored when `padding`=`True` and there is no truncation strategy. To pad to max length, use `padding='max_length'`.\n",
" warnings.warn(\n",
- "2025-11-12 20:44:18,821 - INFO - Finished converting document 2501.17887v1.pdf in 58.63 sec.\n"
+ "2025-11-15 15:27:46,060 - INFO - Finished converting document docling_technical_report.pdf in 58.56 sec.\n"
]
}
],
@@ -2231,7 +2198,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": 38,
"metadata": {},
"outputs": [
{
diff --git a/opentech/docling/notebooks/docling_technical_report.pdf b/opentech/docling/notebooks/docling_technical_report.pdf
new file mode 100644
index 0000000..8cc9d96
Binary files /dev/null and b/opentech/docling/notebooks/docling_technical_report.pdf differ
diff --git a/opentech/docling/notebooks/sample_doc.pdf b/opentech/docling/notebooks/sample_doc.pdf
new file mode 100644
index 0000000..d164ce4
Binary files /dev/null and b/opentech/docling/notebooks/sample_doc.pdf differ
diff --git a/opentech/docling/notebooks/tables_example.pdf b/opentech/docling/notebooks/tables_example.pdf
new file mode 100644
index 0000000..f783f2d
Binary files /dev/null and b/opentech/docling/notebooks/tables_example.pdf differ
diff --git a/opentech/wikipedia.txt b/opentech/wikipedia.txt
new file mode 100644
index 0000000..6bc6451
--- /dev/null
+++ b/opentech/wikipedia.txt
@@ -0,0 +1,463 @@
+International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue,[6] is an American multinational technology company headquartered in Armonk, New York and present in over 175 countries.[7][8] IBM is the largest industrial research organization in the world, with 19 research facilities across a dozen countries, having held the record for most annual U.S. patents generated by a business for 29 consecutive years from 1993 to 2021.[9][10][11]
+
+IBM was founded in 1911 as the Computing-Tabulating-Recording Company (CTR), a holding company of manufacturers of record-keeping and measuring systems. It was renamed "International Business Machines" in 1924 and soon became the leading manufacturer of punch-card tabulating systems. During the 1960s and 1970s, the IBM mainframe, exemplified by the System/360, was the world's dominant computing platform, with the company producing 80 percent of computers in the U.S. and 70 percent of computers worldwide.[12]
+
+IBM entered the microcomputer market in the 1980s with the IBM Personal Computer, which soon became known as PC, one of IBM's best selling products. Due to a lack of foresight by IBM,[13][14] the PC was not well protected by intellectual property laws. As a consequence, IBM quickly began losing its market dominance to emerging competitors in the PC market, while at the same time the openness of the PC platform has ensured PC's longevity as the most popular microcomputer standard.
+
+Beginning in the 1990s, the company began downsizing its operations and divesting from commodity production, most notably selling its personal computer division to the Lenovo Group in 2005. IBM has since concentrated on computer services, software, supercomputers, and scientific research. Since 2000, its supercomputers have consistently ranked among the most powerful in the world, and in 2001 it became the first company to generate more than 3,000 patents in one year, beating this record in 2008 with over 4,000 patents.[12] As of 2022, the company held 150,000 patents.[15]
+
+As one of the world's oldest and largest technology companies, IBM has been responsible for several technological innovations, including the automated teller machine (ATM), dynamic random-access memory (DRAM), the floppy disk, the hard disk drive, the magnetic stripe card, the relational database, the SQL programming language, and the UPC barcode. The company has made inroads in advanced computer chips, quantum computing, artificial intelligence, and data infrastructure.[16][17][18] IBM employees and alumni have won various recognitions for their scientific research and inventions, including six Nobel Prizes and six Turing Awards.[19]
+
+IBM is a publicly traded company and one of 30 companies in the Dow Jones Industrial Average. It is among the world's largest employers, with over 297,900 employees worldwide in 2022.[20] Despite its relative decline within the technology sector,[21] IBM remains the seventh largest technology company by revenue, and 67th largest overall company by revenue in the United States. It is also consistently ranked among the world's most recognizable, valuable, and admired brands.[22]
+History
+Main article: History of IBM
+
+IBM originated with several technological innovations developed and commercialized in the late 19th century. Julius E. Pitrap patented the computing scale in 1885;[23] Alexander Dey invented the dial recorder (1888);[24] Herman Hollerith patented the Electric Tabulating Machine (1889);[25] and Willard Bundy invented a time clock to record workers' arrival and departure times on a paper tape (1889).[26] On June 16, 1911, their four companies were amalgamated in New York State by Charles Ranlett Flint forming a fifth company, the Computing-Tabulating-Recording Company (CTR) based in Endicott, New York.[1][27] The five companies had 1,300 employees and offices and plants in Endicott and Binghamton, New York; Dayton, Ohio; Detroit, Michigan; Washington, D.C.; and Toronto, Canada.[citation needed]
+
+Collectively, the companies manufactured a wide array of machinery for sale and lease, ranging from commercial scales and industrial time recorders, meat and cheese slicers, to tabulators and punched cards. Thomas J. Watson, Sr., fired from the National Cash Register Company by John Henry Patterson, called on Flint and, in 1914, was offered a position at CTR.[28] Watson joined CTR as general manager and then, 11 months later, was made President when antitrust cases relating to his time at NCR were resolved.[29] Having learned Patterson's pioneering business practices, Watson proceeded to put the stamp of NCR onto CTR's companies.[30] He implemented sales conventions, "generous sales incentives, a focus on customer service, an insistence on well-groomed, dark-suited salesmen and had an evangelical fervor for instilling company pride and loyalty in every worker".[31][32] His favorite slogan, "THINK", became a mantra for each company's employees.[31] During Watson's first four years, revenues reached $9 million ($158 million today) and the company's operations expanded to Europe, South America, Asia and Australia.[31] Watson never liked the clumsy hyphenated name "Computing-Tabulating-Recording Company" and chose to replace it with the more expansive title "International Business Machines" which had previously been used as the name of CTR's Canadian Division;[33] the name was changed on February 14, 1924.[34] By 1933, most of the subsidiaries had been merged into one company, IBM.[35]
+NACA researchers using an IBM type 704 electronic data processing machine in 1957
+
+The Nazis made extensive use of Hollerith punch card and alphabetical accounting equipment and IBM's majority-owned German subsidiary, Deutsche Hollerith Maschinen GmbH (Dehomag), supplied this equipment from the early 1930s. This equipment was critical to Nazi efforts to categorize citizens of both Germany and other nations that fell under Nazi control through ongoing censuses. This census data was used to facilitate the round-up of Jews and other targeted groups, and to catalog their movements through the machinery of the Holocaust, including internment in the concentration camps.[36] Nazi concentration camps operated a Hollerith department called Hollerith Abteilung, which had IBM machines, including calculating and sorting machines.[37]
+
+IBM produced 6% of the M1 Carbine rifles used in World War II, about 346,500 of them, between August 1943 and May. IBM never produced guns for civilian sales, only for the military.
+
+IBM built the Automatic Sequence Controlled Calculator, an electromechanical computer, during World War II. It offered its first commercial stored-program computer, the vacuum tube based IBM 701, in 1952. The IBM 305 RAMAC introduced the hard disk drive in 1956. The company switched to transistorized designs with the 7000 and 1400 series, beginning in 1958.
+
+In 1956, the company demonstrated the first practical example of artificial intelligence when Arthur L. Samuel of IBM's Poughkeepsie, New York, laboratory programmed an IBM 704 not merely to play checkers but "learn" from its own experience. In 1957, the FORTRAN scientific programming language was developed. In 1961, IBM developed the SABRE reservation system for American Airlines and introduced the highly successful Selectric typewriter.
+
+In 1963, IBM employees and computers helped NASA track the orbital flights of the Mercury astronauts. A year later, it moved its corporate headquarters from New York City to Armonk, New York. The latter half of the 1960s saw IBM continue its support of space exploration, participating in the 1965 Gemini flights, 1966 Saturn flights, and 1969 lunar mission. IBM also developed and manufactured the Saturn V's Instrument Unit and Apollo spacecraft guidance computers.
+An IBM System/360 in use at the University of Michigan c. 1969
+IBM guidance computer hardware for the Saturn V Instrument Unit
+
+On April 7, 1964, IBM launched the first computer system family, the IBM System/360. It spanned the complete range of commercial and scientific applications from large to small, allowing companies for the first time to upgrade to models with greater computing capability without having to rewrite their applications. It was followed by the IBM System/370 in 1970. Together the 360 and 370 made the IBM mainframe the dominant mainframe computer and the dominant computing platform in the industry throughout this period and into the early 1980s. They and the operating systems that ran on them such as OS/VS1 and MVS, and the middleware built on top of those such as the CICS transaction processing monitor, had a near-monopoly-level market share and became the thing IBM was most known for during this period.[38]
+
+In 1969, the United States of America alleged that IBM violated the Sherman Antitrust Act by monopolizing or attempting to monopolize the general-purpose electronic digital computer system market, specifically computers designed primarily for business, and subsequently alleged that IBM violated the antitrust laws in IBM's actions directed against leasing companies and plug-compatible peripheral manufacturers. Shortly after, IBM unbundled its software and services in what many observers believed was a direct result of the lawsuit, creating a competitive market for software. In 1982, the Department of Justice dropped the case as "without merit".[39]
+
+Also in 1969, IBM engineer Forrest Parry invented the magnetic stripe card that would become ubiquitous for credit/debit/ATM cards, driver's licenses, rapid transit cards, and a multitude of other identity and access control applications. IBM pioneered the manufacture of these cards, and for most of the 1970s, the data processing systems and software for such applications ran exclusively on IBM computers. In 1974, IBM engineer George J. Laurer developed the Universal Product Code.[40] IBM and the World Bank first introduced financial swaps to the public in 1981, when they entered into a swap agreement.[41] The IBM PC, originally designated IBM 5150, was introduced in 1981, and it soon became an industry standard.
+
+In 1991 IBM began spinning off its many divisions into autonomous subsidiaries (so-called "Baby Blues") in an attempt to make the company more manageable and to streamline IBM by having other investors finance those companies.[42][43] These included AdStar, dedicated to disk drives and other data storage products; IBM Application Business Systems, dedicated to mid-range computers; IBM Enterprise Systems, dedicated to mainframes; Pennant Systems, dedicated to mid-range and large printers; Lexmark, dedicated to small printers; and more.[44] Lexmark was acquired by Clayton & Dubilier in a leveraged buyout shortly after its formation.[45]
+
+In September 1992, IBM completed the spin-off of their various non-mainframe and non-midrange, personal computer manufacturing divisions, combining them into an autonomous wholly owned subsidiary known as the IBM Personal Computer Company (IBM PC Co.).[46][47] This corporate restructuring came after IBM reported a sharp drop in profit margins during the second quarter of fiscal year 1992; market analysts attributed the drop to a fierce price war in the personal computer market over the summer of 1992.[48] The corporate restructuring was one of the largest and most expensive in history up to that point.[49] By the summer of 1993, the IBM PC Co. had divided into multiple business units itself, including Ambra Computer Corporation and the IBM Power Personal Systems Group, the former an attempt to design and market "clone" computers of IBM's own architecture and the latter responsible for IBM's PowerPC-based workstations.[50][51]
+
+In 1993, IBM posted an $8 billion loss – at the time the biggest in American corporate history.[52] Lou Gerstner was hired as CEO from RJR Nabisco to turn the company around.[53] In 2002 IBM acquired PwC Consulting, the consulting arm of PwC which was merged into its IBM Global Services.[54][55]
+IBM inventions (clockwise from top-left): the hard-disk drive, DRAM, the UPC bar code, and the magnetic stripe card
+
+In 1998, IBM merged the enterprise-oriented Personal Systems Group of the IBM PC Co. into IBM's own Global Services personal computer consulting and customer service division. The resulting merged business units then became known simply as IBM Personal Systems Group.[56] In 1999, IBM stopped selling their computers at retail outlets after their market share in this sector had fallen considerably behind competitors Compaq and Dell.[57] Immediately afterwards, the IBM PC Co. was dissolved and merged into IBM Personal Systems Group.[58]
+
+On September 14, 2004, LG and IBM announced that their business alliance in the South Korean market would end at the end of that year. Both companies stated that it was unrelated to the charges of bribery earlier that year.[59][60][61][62] Xnote was originally part of the joint venture and was sold by LG in 2012.[63]
+
+In 2005, the company sold all of its personal computer business to Chinese technology company Lenovo[64] and, in 2009, it acquired software company SPSS Inc. Later in 2009, IBM's Blue Gene supercomputing program was awarded the National Medal of Technology and Innovation by U.S. President Barack Obama. In 2011, IBM gained worldwide attention for its artificial intelligence program Watson, which was exhibited on Jeopardy! where it won against game-show champions Ken Jennings and Brad Rutter. The company also celebrated its 100th anniversary in the same year on June 16. In 2012, IBM announced it had agreed to buy Kenexa and Texas Memory Systems,[65] and a year later it also acquired SoftLayer Technologies, a web hosting service, in a deal worth around $2 billion.[66] Also that year, the company designed a video surveillance system for Davao City.[67]
+
+In 2014 IBM announced it would sell its x86 server division to Lenovo for $2.1 billion.[68] while continuing to offer Power ISA-based servers. Also that year, IBM began announcing several major partnerships with other companies, including Apple Inc.,[69][70] Twitter,[71] Facebook,[72] Tencent,[73] Cisco,[74] UnderArmour,[75] Box,[76] Microsoft,[77] VMware,[78] CSC,[79] Macy's,[80] Sesame Workshop,[81] the parent company of Sesame Street, and Salesforce.com.[82]
+
+In 2015, IBM announced three major acquisitions: Merge Healthcare for $1 billion,[83] data storage vendor Cleversafe, and all digital assets from The Weather Company, including Weather.com and the Weather Channel mobile app.[84][85] Also that year, IBM employees created the film A Boy and His Atom, which was the first molecule movie to tell a story. In 2016, IBM acquired video conferencing service Ustream and formed a new cloud video unit.[86][87] In April 2016, it posted a 14-year low in quarterly sales.[88] The following month, Groupon sued IBM accusing it of patent infringement, two months after IBM accused Groupon of patent infringement in a separate lawsuit.[89]
+
+In 2015, IBM bought the digital part of The Weather Company,[90] Truven Health Analytics for $2.6 billion in 2016, and in October 2018, IBM announced its intention to acquire Red Hat for $34 billion,[91][92][93] which was completed on July 9, 2019.[94]
+
+IBM announced in October 2020 that it would divest the Managed Infrastructure Services unit of its Global Technology Services division into a new public company.[95] The new company, Kyndryl, will have 90,000 employees, 4,600 clients in 115 countries, with a backlog of $60 billion.[96][97][98] IBM's spin off was greater than any of its previous divestitures, and welcomed by investors.[99][100][101] IBM appointed Martin Schroeter, who had been IBM's CFO from 2014 through the end of 2017, as CEO of Kyndryl.[102][103]
+
+On March 7, 2022, a few days after the start of the Russian invasion of Ukraine, IBM CEO Arvind Krishna published a Ukrainian flag and announced that "we have suspended all business in Russia". All Russian articles were also removed from the IBM website.[104] On June 7, Krishna announced that IBM would carry out an "orderly wind-down" of its operations in Russia.[105]
+
+In 2023, IBM acquired Manta Software Inc. to complement its data and AI governance capabilities for an undisclosed amount.[106] On November 16, 2023, IBM suspended ads on Twitter after Elon Musk's antisemitic comments.[107][108]
+
+In December 2023, IBM announced it would acquire Software AG's StreamSets and webMethods platforms for €2.13 billion ($2.33 billion).[109]
+Headquarters and offices
+IBM CHQ in Armonk, New York in 2014
+Pangu Plaza, one of IBM's offices in Beijing, China
+
+IBM is headquartered in Armonk, New York, a community 37 miles (60 km) north of Midtown Manhattan.[110] A nickname for the company is the "Colossus of Armonk".[111] Its principal building, referred to as CHQ, is a 283,000-square-foot (26,300 m2) glass and stone edifice on a 25-acre (10 ha) parcel amid a 432-acre former apple orchard the company purchased in the mid-1950s.[112] There are two other IBM buildings within walking distance of CHQ: the North Castle office, which previously served as IBM's headquarters; and the Louis V. Gerstner, Jr., Center for Learning[113] (formerly known as IBM Learning Center (ILC)), a resort hotel and training center, which has 182 guest rooms, 31 meeting rooms, and various amenities.[114]
+
+IBM operates in 174 countries as of 2016,[2] with mobility centers in smaller market areas and major campuses in the larger ones. In New York City, IBM has several offices besides CHQ, including the IBM Watson headquarters at Astor Place in Manhattan. Outside of New York, major campuses in the United States include Austin, Texas; Research Triangle Park (Raleigh-Durham), North Carolina; Rochester, Minnesota; and Silicon Valley, California.
+
+IBM's real estate holdings are varied and globally diverse. Towers occupied by IBM include 1250 René-Lévesque (Montreal, Canada) and One Atlantic Center (Atlanta, Georgia, US). In Beijing, China, IBM occupies Pangu Plaza,[115] the city's seventh tallest building and overlooking Beijing National Stadium ("Bird's Nest"), home to the 2008 Summer Olympics.
+
+IBM India Private Limited is the Indian subsidiary of IBM, which is headquartered at Bangalore, Karnataka. It has facilities in Coimbatore, Chennai, Kochi, Ahmedabad, Delhi, Kolkata, Mumbai, Pune, Gurugram, Noida, Bhubaneshwar, Surat, Visakhapatnam, Hyderabad, Bangalore and Jamshedpur.
+
+Other notable buildings include the IBM Rome Software Lab (Rome, Italy), Hursley House (Winchester, UK), 330 North Wabash (Chicago, Illinois, United States), the Cambridge Scientific Center (Cambridge, Massachusetts, United States), the IBM Toronto Software Lab (Toronto, Canada), the IBM Building, Johannesburg (Johannesburg, South Africa), the IBM Building (Seattle) (Seattle, Washington, United States), the IBM Hakozaki Facility (Tokyo, Japan), the IBM Yamato Facility (Yamato, Japan), the IBM Canada Head Office Building (Ontario, Canada) and the Watson IoT Headquarters[116] (Munich, Germany). Defunct IBM campuses include the IBM Somers Office Complex (Somers, New York), Spango Valley (Greenock, Scotland), and Tour Descartes (Paris, France). The company's contributions to industrial architecture and design include works by Marcel Breuer, Eero Saarinen, Ludwig Mies van der Rohe, I.M. Pei and Ricardo Legorreta. Van der Rohe's building in Chicago was recognized with the 1990 Honor Award from the National Building Museum.[117]
+
+IBM was recognized as one of the Top 20 Best Workplaces for Commuters by the United States Environmental Protection Agency (EPA) in 2005, which recognized Fortune 500 companies that provided employees with excellent commuter benefits to help reduce traffic and air pollution.[118] In 2004, concerns were raised related to IBM's contribution in its early days to pollution in its original location in Endicott, New York.[119][120]
+Finance
+10-Year Financials (2014-2023) Year Revenue
+in mil. US$ Net income
+in mil. US$ Employees
+2014 92,793 Decrease 12,022 379,592
+2015 81,741 Decrease 13,190 377,757
+2016 79,919 Decrease 11,872 380,300
+2017 79,139 Decrease 5,753 366,600
+2018 79,591 Increase 8,723 350,600
+2019 77,100 Decrease 9,400 352,600
+2020 73,620 Decrease 5,590 345,900
+2021 57,350† Increase 5,743 282,100
+2022 60,530 Increase 1,639 288,300
+2023 61,860 Increase 7,502 282,200
+†=IBM's financial statements from the 2021 annual report have adjusted revenue, income numbers, employee count for the previous years to account for discontinued operations related to the separation of Kyndryl.
+
+For the fiscal year 2020, IBM reported earnings of $5.6 billion, with an annual revenue of $73.6 billion. IBM's revenue has fallen for 8 of the last 9 years.[121] IBM's market capitalization was valued at over $127 billion as of April 2021.[122] IBM ranked No. 38 on the 2020 Fortune 500 rankings of the largest United States corporations by total revenue.[123] In 2014, IBM was accused of using "financial engineering" to hit its quarterly earnings targets rather than investing for the longer term.[124][125][126]
+Products and services
+See also: List of IBM products
+Blue Gene was awarded the National Medal of Technology and Innovation in 2009.
+
+IBM has a large and diverse portfolio of products and services. As of 2016, these offerings fall into the categories of cloud computing, artificial intelligence, commerce, data and analytics, Internet of things (IoT),[127] IT infrastructure, mobile, digital workplace[128] and cybersecurity.[129]
+
+IBM Cloud includes infrastructure as a service (IaaS), software as a service (SaaS) and platform as a service (PaaS) offered through public, private and hybrid cloud delivery models. For instance, the IBM Bluemix PaaS enables developers to quickly create complex websites on a pay-as-you-go model. IBM SoftLayer is a dedicated server, managed hosting and cloud computing provider, which in 2011 reported hosting more than 81,000 servers for more than 26,000 customers.[130] IBM also provides Cloud Data Encryption Services (ICDES), using cryptographic splitting to secure customer data.[131]
+
+Hardware designed by IBM for these categories include IBM's Power microprocessors, which were designed into many console gaming systems, including Xbox 360,[132] PlayStation 3, and Nintendo's Wii U.[133][134] IBM Secure Blue is encryption hardware that can be built into microprocessors,[135] and in 2014, the company revealed TrueNorth, a neuromorphic CMOS integrated circuit and announced a $3 billion investment over the following five years to design a neural chip that mimics the human brain, with 10 billion neurons and 100 trillion synapses, but that uses just 1 kilowatt of power.[136] In 2016, the company launched all-flash arrays designed for small and midsized companies, which includes software for data compression, provisioning, and snapshots across various systems.[137]
+
+IT outsourcing also represents a major service provided by IBM, with more than 60 data centers worldwide.[138] IBM Developer is IBM's source for emerging software technologies, and SPSS is a software package used for statistical analysis. IBM's Kenexa suite provides employment and retention solutions[buzzword], and includes the BrassRing, an applicant tracking system used by thousands of companies for recruiting.[139] IBM also owns The Weather Company, which provides weather forecasting and includes weather.com and Weather Underground.[140]
+
+Smarter Planet is an initiative that seeks to achieve economic growth, near-term efficiency, sustainable development, and societal progress,[141][142] targeting opportunities such as smart grids,[143] water management systems,[144] solutions to traffic congestion,[145] and greener buildings.[146]
+
+Services provisions include Redbooks, which are publicly available online books about best practices with IBM products, and developerWorks, a website for software developers and IT professionals with how-to articles and tutorials, as well as software downloads, code samples, discussion forums, podcasts, blogs, wikis, and other resources for developers and technical professionals.[147]
+
+IBM Watson is a technology platform that uses natural language processing and machine learning to reveal insights from large amounts of unstructured data.[148] Watson was debuted in 2011 on the American game show Jeopardy!, where it competed against champions Ken Jennings and Brad Rutter in a three-game tournament and won. Watson has since been applied to business, healthcare, developers, and universities. For example, IBM has partnered with Memorial Sloan Kettering Cancer Center to assist with considering treatment options for oncology patients and for doing melanoma screenings.[149] Several companies use Watson for call centers, either replacing or assisting customer service agents.[150]
+IBM Q System One (2019), the first circuit-based commercial quantum computer
+
+In January 2019, IBM introduced its first commercial quantum computer: IBM Q System One.[151]
+
+IBM also provides infrastructure for the New York City Police Department through their IBM Cognos Analytics to perform data visualizations of CompStat crime data.[152]
+
+In March 2020, it was announced that IBM will build the first quantum computer in Germany. The computer should allow researchers to harness the technology without falling foul of the EU's increasingly assertive stance on data sovereignty.[153]
+
+In June 2020, IBM announced that it was exiting the facial recognition business. In a letter to congress,[154] IBM's Chief Executive Officer Arvind Krishna told lawmakers, "now is the time to begin a national dialogue on whether and how facial recognition technology should be employed by domestic law enforcement agencies."[155]
+
+In May 2022, IBM announced the company had signed a multi-year Strategic Collaboration Agreement with Amazon Web Services to make a wide variety of IBM software available as a service on AWS Marketplace. Additionally, the deal includes both companies making joint investments that make it easier for companies to consume IBM's offering and integrate them with AWS, including developer training and software development for select markets.[156]
+
+In November 2022, the company came out with a chip called the 433-qubit Osprey. Time called it "the world's most powerful quantum processor" and noted that if the processor's speed were represented in bits, the number would be larger than the total number of atoms in the universe.[157]
+
+In an effort to streamline its products and services, beginning in the 1990s, IBM has regularly sold off low margin assets while shifting its focus to higher-value, more profitable markets. In 1991, the company spun off its printer and keyboard manufacturing division to Lexmark, in 2005 it sold its personal computer (ThinkPad/ThinkCentre) business to Lenovo, in 2015 it adopted a "fabless" model with semiconductors design and offloaded manufacturing to GlobalFoundries, and in 2021 it spun-off its managed infrastructure services unit into a new public company named Kyndryl.[158][159] IBM also announced the acquisition of the enterprise software company Turbonomic for $1.5 billion.[160] In 2022, IBM announced it would sell Watson Health to private equity firm Francisco Partners.[161] IBM also started a collaboration with new Japanese manufacturer Rapidus in late 2022,[162] which led GlobalFoundries to file a lawsuit against IBM the following year.[163]
+Research
+The Thomas J. Watson Research Center in Yorktown Heights, New York, is one of 12 IBM research labs worldwide.
+IBM Fellow Benoit Mandelbrot discusses fractal geometry, 2010.
+
+Research has been part of IBM since its founding, and its organized efforts trace their roots back to 1945, when the Watson Scientific Computing Laboratory was founded at Columbia University in New York City, converting a renovated fraternity house on Manhattan's West Side into IBM's first laboratory. Now, IBM Research constitutes the largest industrial research organization in the world, with 12 labs on 6 continents.[164] IBM Research is headquartered at the Thomas J. Watson Research Center in New York, and facilities include the Almaden lab in California, Austin lab in Texas, Australia lab in Melbourne, Brazil lab in São Paulo and Rio de Janeiro, China lab in Beijing and Shanghai, Ireland lab in Dublin, Haifa lab in Israel, India lab in Delhi and Bangalore, Tokyo lab, Zurichlab and Africa lab in Nairobi.
+
+In terms of investment, IBM's R&D expenditure totals several billion dollars each year. In 2012, that expenditure was approximately $6.9 billion.[165] Recent allocations have included $1 billion to create a business unit for Watson in 2014, and $3 billion to create a next-gen semiconductor along with $4 billion towards growing the company's "strategic imperatives" (cloud, analytics, mobile, security, social) in 2015.[166]
+
+IBM has been a leading proponent of the Open Source Initiative, and began supporting Linux in 1998.[167] The company invests billions of dollars in services and software based on Linux through the IBM Linux Technology Center, which includes over 300 Linux kernel developers.[168] IBM has also released code under different open-source licenses, such as the platform-independent software framework Eclipse (worth approximately $40 million at the time of the donation),[169] the three-sentence International Components for Unicode (ICU) license, and the Java-based relational database management system (RDBMS) Apache Derby. IBM's open source involvement has not been trouble-free, however (see SCO v. IBM).
+
+Famous inventions and developments by IBM include: the automated teller machine (ATM), dynamic random access memory (DRAM), the electronic keypunch, the financial swap, the floppy disk, the hard disk drive, the magnetic stripe card, the relational database, RISC, the SABRE airline reservation system, SQL, the Universal Product Code (UPC) bar code, and the virtual machine. Additionally, in 1990 company scientists used a scanning tunneling microscope to arrange 35 individual xenon atoms to spell out the company acronym, marking the first structure assembled one atom at a time.[170] A major part of IBM research is the generation of patents. Since its first patent for a traffic signaling device, IBM has been one of the world's most prolific patent sources. In 2021, the company held the record for most patents generated by a business for 29 consecutive years for the achievement.[9]
+
+Five IBM employees have received the Nobel Prize: Leo Esaki, of the Thomas J. Watson Research Center in Yorktown Heights, N.Y., in 1973, for work in semiconductors; Gerd Binnig and Heinrich Rohrer, of the Zurich Research Center, in 1986, for the scanning tunneling microscope;[171] and Georg Bednorz and Alex Müller, also of Zurich, in 1987, for research in superconductivity. Six IBM employees have won the Turing Award, including the first female recipient Frances E. Allen.[172] Ten National Medals of Technology (USA) and five National Medals of Science (USA) have been awarded to IBM employees.
+Brand and reputation
+IBM ads at John F. Kennedy International Airport, 2013
+
+IBM is nicknamed Big Blue partly due to its blue logo and color scheme,[173][174] and also in reference to its former de facto dress code of white shirts with blue suits.[173][175] The company logo has undergone several changes over the years, with its current "8-bar" logo designed in 1972 by graphic designer Paul Rand.[176] It was a general replacement for a 13-bar logo, since period photocopiers did not render narrow (as opposed to tall) stripes well. Aside from the logo, IBM used Helvetica as a corporate typeface for 50 years, until it was replaced in 2017 by the custom-designed IBM Plex.
+
+IBM has a valuable brand as a result of over 100 years of operations and marketing campaigns. Since 1996, IBM has been the exclusive technology partner for the Masters Tournament, one of the four major championships in professional golf, with IBM creating the first Masters.org (1996), the first course cam (1998), the first iPhone app with live streaming (2009), and first-ever live 4K Ultra High Definition feed in the United States for a major sporting event (2016).[177] As a result, IBM CEO Ginni Rometty became the third female member of the Master's governing body, the Augusta National Golf Club.[178] IBM is also a major sponsor in professional tennis, with engagements at the U.S. Open, Wimbledon, the Australian Open, and the French Open.[179] The company also sponsored the Olympic Games from 1960 to 2000,[180] and the National Football League from 2003 to 2012.[181]
+
+In 2012, IBM's brand was valued at $75.5 billion and ranked by Interbrand as the third-best brand worldwide.[182] That same year, it was also ranked the top company for leaders (Fortune), the number two green company in the U.S. (Newsweek),[183] the second-most respected company (Barron's),[184] the fifth-most admired company (Fortune), the 18th-most innovative company (Fast Company), and the number one in technology consulting and number two in outsourcing (Vault).[185] In 2015, Forbes ranked IBM as the fifth-most valuable brand,[186] and for 2020, the Drucker Institute named IBM the No. 3 best-managed company.[187] During the 2022 Russian invasion of Ukraine, IBM donated $250,000 to Polish Humanitarian Action and the same amount to People in Need, Czech Republic.[188]
+
+In terms of ESG, IBM reported its total CO2e emissions (direct and indirect) for the twelve months ending December 31, 2020 at 621 kilotons (-324 /-34.3% year-on-year).[189] In February 2021, IBM committed to achieve net zero greenhouse gas emissions by the year 2030.[190]
+People and culture
+Employees
+See also: IBM and unions and List of IBM CEOs
+New IBM employees being welcomed to a bootcamp at IBM Austin, 2015
+Employees demonstrating IBM Watson capabilities in a Jeopardy! exhibition match on campus, 2011
+
+IBM has one of the largest workforces in the world, and employees at Big Blue are referred to as "IBMers". The company pioneered in several employment practices unheard of at the time. IBM was among the first corporations to provide group life insurance (1934), survivor benefits (1935), training for women (1935), paid vacations (1937), and training for disabled people (1942). IBM hired its first black salesperson in 1946, and in 1952, CEO Thomas J. Watson, Jr. published the company's first written equal opportunity policy letter, one year before the U.S. Supreme Court decision in Brown vs. Board of Education and 11 years before the Civil Rights Act of 1964. The Human Rights Campaign has rated IBM 100% on its index of gay-friendliness every year since 2003,[191] with IBM providing same-sex partners of its employees with health benefits and an anti-discrimination clause. Additionally, in 2005, IBM became the first major company in the world to formally commit to not using genetic information in employment decisions. In 2017, IBM was named to Working Mother's 100 Best Companies List for the 32nd consecutive year.[192]
+
+IBM has several leadership development and recognition programs to recognize employee potential and achievements. For early-career high potential employees, IBM sponsors leadership development programs by discipline (e.g., general management (GMLDP), human resources (HRLDP), finance (FLDP)). Each year, the company also selects 500 IBM employees for the IBM Corporate Service Corps (CSC),[193] which gives top employees a month to do humanitarian work abroad.[194] For certain interns, IBM also has a program called Extreme Blue that partners with top business and technical students to develop high-value technology and compete to present their business case to the company's CEO at internship's end.[195]
+
+The company also has various designations for exceptional individual contributors such as Senior Technical Staff Member (STSM), Research Staff Member (RSM), Distinguished Engineer (DE), and Distinguished Designer (DD).[196] Prolific inventors can also achieve patent plateaus and earn the designation of Master Inventor. The company's most prestigious designation is that of IBM Fellow. Since 1963, the company names a handful of Fellows each year based on technical achievement. Other programs recognize years of service such as the Quarter Century Club established in 1924, and sellers are eligible to join the Hundred Percent Club, composed of IBM salesmen who meet their quotas, convened in Atlantic City, New Jersey. Each year, the company also selects 1,000 IBM employees annually to award the Best of IBM Award, which includes an all-expenses-paid trip to the awards ceremony in an exotic location.
+
+IBM's culture has evolved significantly over its century of operations. In its early days, a dark (or gray) suit, white shirt, and a "sincere" tie constituted the public uniform for IBM employees.[197] During IBM's management transformation in the 1990s, CEO Louis V. Gerstner Jr. relaxed these codes, normalizing the dress and behavior of IBM employees.[198] The company's culture has also given to different plays on the company acronym (IBM), with some saying it stands for "I've Been Moved" due to relocations and layoffs,[199] others saying it stands for "I'm By Myself" pursuant to a prevalent work-from-anywhere norm,[200] and others saying it stands for "I'm Being Mentored" due to the company's open door policy and encouragement for mentoring at all levels.[201] In terms of labor relations, the company has traditionally resisted labor union organizing,[202] although unions represent some IBM workers outside the United States.[203] In Japan, IBM employees also have an American football team complete with pro stadium, cheerleaders and televised games, competing in the Japanese X-League as the "Big Blue".[204]
+
+In 2015, IBM started giving employees the option of choosing Mac as their primary work device, next to the option of a PC or a Linux distribution.[205] In 2016, IBM eliminated forced rankings and changed its annual performance review system to focus more on frequent feedback, coaching, and skills development.[206]
+IBM alumni
+
+Many IBM employees have achieved notability outside of work and after leaving IBM. In business, former IBM employees include Apple Inc. CEO Tim Cook,[207] former EDS CEO and politician Ross Perot, Microsoft chairman John W. Thompson, SAP co-founder Hasso Plattner, Gartner founder Gideon Gartner, Advanced Micro Devices (AMD) CEO Lisa Su,[208] Cadence Design Systems CEO Anirudh Devgan,[209] former Citizens Financial Group CEO Ellen Alemany, former Yahoo! chairman Alfred Amoroso, former AT&T CEO C. Michael Armstrong, former Xerox Corporation CEOs David T. Kearns and G. Richard Thoman,[210] former Fair Isaac Corporation CEO Mark N. Greene,[211] Citrix Systems co-founder Ed Iacobucci, ASOS.com chairman Brian McBride, former Lenovo CEO Steve Ward, and former Teradata CEO Kenneth Simonds.
+
+In government, alumna Patricia Roberts Harris served as United States Secretary of Housing and Urban Development, the first African American woman to serve in the United States Cabinet.[212] Samuel K. Skinner served as U.S. Secretary of Transportation and as the White House Chief of Staff. Alumni also include U.S. Senators Mack Mattingly and Thom Tillis; Wisconsin governor Scott Walker;[213] former U.S. Ambassadors Vincent Obsitnik (Slovakia), Arthur K. Watson (France), and Thomas Watson Jr. (Soviet Union); and former U.S. Representatives Todd Akin,[214] Glenn Andrews, Robert Garcia, Katherine Harris,[215] Amo Houghton, Jim Ross Lightfoot, Thomas J. Manton, Donald W. Riegle Jr., and Ed Zschau.
+
+Other former IBM employees include NASA astronaut Michael J. Massimino, Canadian astronaut and former Governor General Julie Payette, noted musician Dave Matthews,[216] Harvey Mudd College president Maria Klawe, Western Governors University president emeritus Robert Mendenhall, former University of Kentucky president Lee T. Todd Jr., former University of Iowa president Bruce Harreld, NFL referee Bill Carollo,[217] former Rangers F.C. chairman John McClelland, and recipient of the Nobel Prize in Literature J. M. Coetzee. Thomas Watson Jr. also served as the 11th national president of the Boy Scouts of America.
+Board and shareholders
+
+The company's 15-member board of directors are responsible for overall corporate management and includes the current or former CEOs of Anthem, Dow Chemical, Johnson and Johnson, Royal Dutch Shell, UPS, and Vanguard as well as the president of Cornell University and a retired U.S. Navy admiral.[218]
+
+In 2011, IBM became the first technology company Warren Buffett's holding company Berkshire Hathaway invested in.[219] Initially he bought 64 million shares costing $10.5 billion. Over the years, Buffett increased his IBM holdings, but by the end of 2017 had reduced them by 94.5% to 2.05 million shares; by May 2018, he was completely out of IBM.[220]
+See also
+Portals:
+
+ Companies
+ Telecommunication
+ icon Electronics
+ icon Technology
+
+ List of electronics brands
+ List of largest Internet companies
+ List of largest manufacturing companies by revenue
+ Tech companies in the New York City metropolitan region
+ Top 100 US Federal Contractors
+ Quantum Energy Teleportation using IBM superconducting computers
+
+References
+
+"Certificate of Incorporation of Computing-Tabulating-Recording-Co", Appendix to Hearings Before the Committee on Patents, House of Representatives, Seventy-Fourth Congress, on H. R. 4523, Part III, United States Government Printing Office, 1935 [Incorporation paperwork filed June 16, 1911], archived from the original on August 3, 2020, retrieved July 18, 2019
+"IBM Is Blowing Up Its Annual Performance Review". Fortune. February 1, 2016. Archived from the original on October 29, 2020. Retrieved July 22, 2016.
+"IBM – Arvind Krishna – Chief Executive Officer". www.ibm.com. Archived from the original on March 8, 2022. Retrieved March 8, 2022.
+"IBM Newsroom - Gary Cohn". IBM Newsroom. Retrieved March 8, 2022.
+"US SEC: Form 10-K IBM". U.S. Securities and Exchange Commission. February 26, 2024.
+"IBM100 - The Making of International Business Machines". www-03.ibm.com. March 7, 2012. Archived from the original on October 5, 2018. Retrieved December 30, 2022.
+"Trust and responsibility. Earned and practiced daily". IBM Impact. June 27, 2019. Retrieved December 30, 2022.
+"10-K". 10-K. Archived from the original on December 5, 2019. Retrieved June 1, 2019.
+Bajpai, Prableen (January 29, 2021). "Top Patent Holders of 2020". nasdaq.com. Nasdaq. Archived from the original on January 30, 2021. Retrieved February 2, 2021.
+"2021 Top 50 US Patent Assignees". IFI CLAIMS Patent Services. January 5, 2022. Retrieved August 22, 2022.
+Gil, Darío (January 6, 2023). "Why IBM is no longer interested in breaking patent records–and how it plans to measure innovation in the age of open source and quantum computing". Fortune. Archived from the original on January 27, 2023. Retrieved February 3, 2023.
+"IBM | Founding, History, & Products | Britannica". www.britannica.com. Retrieved December 30, 2022.
+Press, Larry (2003). IBM PC. John Wiley and Sons Ltd. (published January 1, 2003). p. 833. ISBN 0-470-86412-5.
+"Origin of the IBM PC | Low End Mac". lowendmac.com. Retrieved February 19, 2024.
+"IBM Tops U.S. Patent List for 28th Consecutive Year with Innovations in Artificial Intelligence, Hybrid Cloud, Quantum Computing and Cyber-Security". IBM Newsroom. Retrieved July 14, 2023.
+Helmore, Edward (December 4, 2023). "IBM unveils new quantum computing chip to 'explore new frontiers of science'". The Guardian. ISSN 0261-3077. Retrieved February 14, 2024.
+Carter, Sandy. "The Evolution Of AI: From IBM And AWS To OpenAI and Anthropic". Forbes. Retrieved February 14, 2024.
+McDowell, Steve. "IBM Realigns Its Storage Business To Match Data-Driven Enterprise Needs". Forbes. Retrieved February 14, 2024.
+"About us". IBM Research. February 9, 2021. Retrieved December 30, 2022.
+"Fortune 500". Fortune. Retrieved December 30, 2022.
+Schofield, Jack (January 21, 2018). "IBM shows growth after 22 straight quarters of declining revenues, but has it turned the corner?". ZDNET. Ziff-Davis. Archived from the original on March 10, 2023.
+"IBM Brand Ranking | All Brand Rankings where IBM is listed!". www.rankingthebrands.com. Retrieved December 30, 2022.
+Aswad, Ed; Meredith, Suzanne (2005). Images of America: IBM in Endicott. Arcadia Publishing. ISBN 0-7385-3700-4. Archived from the original on January 8, 2021. Retrieved October 22, 2020.
+"Dey dial recorder, early 20th century". scienceandsociety.co.uk. UK Science Museum. Archived from the original on October 23, 2020. Retrieved December 30, 2010.
+"Hollerith 1890 Census Tabulator". columbia.edu. Columbia University. Archived from the original on April 20, 2011. Retrieved December 30, 2010.
+"Employee Punch Clocks". floridatimeclock.com. Florida Time Clock. Archived from the original on July 11, 2011. Retrieved December 30, 2010.
+"Tabulating Concerns Unite: Flint & Co. Bring Four Together with $19,000,000 capital" (PDF). The New York Times. June 10, 1911. p. 1. Archived (PDF) from the original on February 25, 2021. Retrieved June 14, 2018.
+Belden, Thomas Graham; Belden, Marva Robins (1962). The Lengthening Shadow: The Life of Thomas J. Watson. Little, Brown and Co. pp. 89–93.
+Campbell-Kelly, Martin; Aspray, William F.; Yost, Jeffrey R.; Tinn, Honghong; Díaz, Gerardo Con (2023). Computer: A History of the Information Machine. New York, NY: Taylor & Francis. ISBN 978-1-000-87875-2.
+Belden (1962) p. 105
+"Chronological History of IBM, 1910s". ibm.com. IBM. January 23, 2003. Archived from the original on August 26, 2018. Retrieved January 30, 2015.
+Marcosson, Isaac F. (1945). Wherever Men Trade: The Romance of the Cash Register. New York (NY): Dodd, Mead & Co. ISBN 978-0-405-04713-8. OCLC 243101.
+Belden (1962) p. 125
+Ngak, Chenda (July 4, 2012). "Made in the USA: American tech inventions". www.cbsnews.com.
+(Rodgers, THINK, p. 83)
+Black, Edwin (2008). IBM and the Holocaust: The Strategic Alliance Between Nazi Germany and America's Most Powerful Corporation. Dialog Press. ISBN 978-0-914153-10-8.
+Pauwels, Jacques R. (2017). Big Business and Hitler (in German). James Lorimer & Company. ISBN 978-1-4594-0987-3.
+Campbell-Kelly, Martin (2003). From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry. Cambridge, Massachusetts: MIT Press. pp. 140–143, 175–176, 237.
+Sullivan, Lawrence A. (April 1982). "Monopolization: Corporate Strategy, the IBM Cases, and the Transformation of the Law". Texas Law Review. 60 (4): 587–647. Archived from the original on January 14, 2022. Retrieved January 14, 2022.
+"The history of the UPC bar code and how the bar code symbol and system became a world standard". cummingsdesign.com. Cummingsdesign. Archived from the original on November 9, 2020. Retrieved May 17, 2011.
+Ross; Westerfield; Jordan (2010). Fundamentals of Corporate Finance (9th, alternate ed.). McGraw Hill. p. 746.
+Miller, Michael W. (November 10, 1992). "'Break Up IBM,' Cry Some Investors Who See Value in Those Baby Blues". The Wall Street Journal. Dow Jones & Company: C1 – via ProQuest.
+Ziegler, Bart (September 6, 1992). "Big Blue still breaking up its bureaucracy". Colorado Springs-Gazette: E3 – via ProQuest.
+"Facts, Figures on IBM's 13 Decentralized Firms". The Salt Lake Tribune. Associated Press. September 6, 1992. p. D14 – via ProQuest.
+Lewis, Peter H. (December 22, 1991). "The Executive Computer; Can I.B.M. Learn From a Unit It Freed?". The New York Times.
+Burgess, John (September 3, 1992). "IBM Plans Division For Its PC Business; One Executive Expected to Be Put in Control". The Washington Post. p. B11. Archived from the original on May 12, 2023.
+Burgess, John (November 26, 1992). "With New Approach and Executive Team, IBM Seeks a Rebirth". The Washington Post. p. D1. Archived from the original on May 12, 2023.
+Hooper, Lawrence (September 3, 1992). "IBM to Unveil New Structure of PC Business". The Wall Street Journal. Dow Jones & Company: A3 – via ProQuest.
+"IBM reports record loss of $8 billion". Austin American-Statesman. Associated Press. July 28, 1993. p. B6 – via ProQuest.
+Lohr, Steve (August 2, 1993). "I.B.M. and Dell Stake Out the Little Picture in PC's". The New York Times: D2. Archived from the original on May 26, 2015.
+Burke, Steven (September 11, 1995). "IBM Power Personal Systems group to be folded into PC Co". Computer Reseller News (648). CMP Publications: 7 – via ProQuest.
+Lefever, Guy; Pesanello, Michele; Fraser, Heather; Taurman, Lee (2011). "Life science: Fade or flourish ?" (PDF). IBM Institute for Business Value. p. 2. Archived from the original (PDF) on February 23, 2014. Retrieved July 6, 2013.
+"IBM Archives: Louis V. Gerstner, Jr". www.ibm.com. January 23, 2003. Archived from the original on September 20, 2020. Retrieved July 10, 2019.
+Linda Rosencrance (July 30, 2002). "IBM to acquire PwC Consulting for $3.5 billion". Computerworld. Retrieved October 4, 2022.
+Stephen Shankland (July 31, 2002). "IBM grabs consulting giant for $3.5 billion". Retrieved October 4, 2022.
+Zimmerman, Michael R.; Lisa Dicarlo (December 14, 1998). "Not Your Father's PC Company Anymore". PC Week. 15 (50). Ziff-Davis: 1 – via ProQuest.
+Hansell, Saul (October 25, 1999). "The Strategy For I.B.M.: Loss-Leader PC Sales". The New York Times. ISSN 0362-4331. Retrieved March 29, 2023.
+Greiner, Lynn (October 22, 1999). "Big Blue to combine PC division with PSG". Computing Canada. 25 (40). Plesman Publications: 6 – via ProQuest.
+Won Choi, Hae (September 15, 2004). "IBM, LG Electronics Call Halt To PC Joint Venture in Korea". The Wall Street Journal. ISSN 0099-9660. Retrieved November 25, 2022.
+Sung-ha, Park (August 30, 2004). "LG, IBM to split by end of year". Korea JoongAng Daily. Retrieved November 25, 2022.
+"IBM, LG Electronics to End Joint Venture". Forbes. Archived from the original on October 22, 2004.
+Vance, Ashlee. "South Korea slams IBM with server slush fund charges". www.theregister.com. Retrieved November 25, 2022.
+"Laptop Retrospective". Laptop Retrospective. Retrieved April 16, 2023.
+"Lenovo Completes Acquisition Of IBM's Personal Computing Division". 03.ibm.com. IBM. Archived from the original on November 10, 2020. Retrieved March 1, 2019.
+"IBM Plans to Acquire Texas Memory Systems". IBM. Archived from the original on October 12, 2020. Retrieved August 17, 2012.
+Saba, Jennifer (June 5, 2013). "IBM to buy website hosting service SoftLayer". Reuters. Archived from the original on September 24, 2015. Retrieved July 1, 2017.
+Joseph, George (March 20, 2019). "Inside the Video Surveillance Program IBM Built for Philippine Strongman Rodrigo Duterte". The Intercept. Archived from the original on January 4, 2021. Retrieved January 17, 2020.
+"Lenovo says $2.1 billion IBM x86 server deal to close on Wednesday" (Press release). Reuters. September 29, 2014. Archived from the original on November 17, 2015. Retrieved July 1, 2017.
+"Apple + IBM". ibm.com. IBM. Archived from the original on March 4, 2016. Retrieved July 18, 2014.
+Etherington, Darrell (July 15, 2014). "Apple Teams Up With IBM For Huge, Expansive Enterprise Push". marketbusinessnews.com. Tech Crunch. Archived from the original on December 15, 2020. Retrieved July 18, 2014.
+Nordqvist, Christian (November 2, 2014). "Landmark IBM Twitter partnership to help businesses make decisions". Market Business News. Archived from the original on November 12, 2020. Retrieved November 2, 2014.
+Ha, Anthony (May 6, 2015). "IBM Announces Marketing Partnership With Facebook". TechCrunch. Archived from the original on November 8, 2020. Retrieved August 13, 2016.
+Kyung-Hoon, Kim (November 3, 2014). "Tencent teams up with IBM to offer business software over the cloud". Reuters. Archived from the original on October 23, 2020. Retrieved August 13, 2016.
+Vanian, Jonathan. "Cisco and IBM's New Partnership Is a Lot About Talk". Fortune. Archived from the original on October 27, 2020. Retrieved August 13, 2016.
+Terdiman, Daniel (January 6, 2016). "IBM, Under Armour Team Up To Bring Cognitive Computing To Fitness Apps". Fast Company. Archived from the original on November 8, 2020. Retrieved August 13, 2016.
+Franklin, Curtis Jr. (June 26, 2015). "IBM, Box Cloud Partnership: What It Means". Information Week. Archived from the original on November 21, 2020. Retrieved August 13, 2016.
+Weinberger, Matt. "Microsoft just made a deal with IBM – and Apple should be nervous". Business Insider. Archived from the original on August 9, 2020. Retrieved August 13, 2016.
+Forrest, Conner (June 14, 2016). "VMware and SugarCRM expand partnerships with IBM, make services available on IBM Cloud". Tech Republic. Archived from the original on August 23, 2020. Retrieved August 13, 2016.
+Taft, Darryl (July 25, 2016). "IBM, CSC Expand Their Cloud Deal to the Mainframe". eWeek. Retrieved August 13, 2016.
+Taft, Darryl (July 22, 2016). "Macy's Taps IBM, Satisfi for In-Store Shopping Companion". eWeek. Retrieved August 13, 2016.
+Toppo, Greg. "Sesame Workshop, IBM partner to use Watson for preschoolers". USA Today. Archived from the original on October 15, 2020. Retrieved August 13, 2016.
+Nusca, Andrea. "IBM, Salesforce Strike Global Partnership on Cloud, AI". Fortune. Archived from the original on November 11, 2020. Retrieved March 7, 2017.
+"IBM Buys Merge Healthcare to Boost Watson Health Cloud". Bloomberg. August 6, 2015. Archived from the original on September 25, 2020. Retrieved March 7, 2017.
+"IBM Agrees to Acquire Weather Channel's Digital Assets". Bloomberg. Archived from the original on October 13, 2020. Retrieved October 28, 2015.
+Hardy, Quentin (October 28, 2015). "IBM to Acquire the Weather Company". The New York Times. Archived from the original on December 14, 2020. Retrieved October 28, 2015.
+"IBM acquires Ustream, launches cloud video unit". USA Today. January 21, 2016. Archived from the original on October 15, 2020. Retrieved August 31, 2017.
+McLain, Tilly (January 21, 2016). "IBM Acquires Ustream: Behind the Acquisition". Ustream Online Video Blog. Archived from the original on January 22, 2016. Retrieved August 22, 2016.
+Egan, Matt (April 19, 2016). "Big Blue isn't so big anymore". CNN Money. Archived from the original on October 31, 2020. Retrieved April 22, 2016.
+Stempel, Jonathan (May 9, 2016). "Groupon sues 'once-great' IBM over patent". Reuters. Archived from the original on November 8, 2020. Retrieved May 9, 2016.
+Goldman, David (October 28, 2015). "IBM Buys Digital Part of The Weather Company". CNN Money. Archived from the original on December 30, 2020. Retrieved November 27, 2019.
+Greene, Jay; McMillan, Robert (October 28, 2018). "IBM to Acquire Red Hat for About $33 Billion". The Wall Street Journal. ISSN 0099-9660. Archived from the original on November 9, 2020. Retrieved October 29, 2018.
+Hammond, Ed; Porter, Kiel; Barinka, Alex (October 28, 2018). "IBM to Acquire Linux Distributor Red Hat for $33.4 Billion". Bloomberg.com. Archived from the original on September 2, 2020. Retrieved October 28, 2018.
+"IBM to acquire Red Hat, completely changing the cloud landscape and becoming world's #1 hybrid cloud provider". Red Hat. October 28, 2018. Archived from the original on October 28, 2018. Retrieved October 28, 2018.
+"IBM Closes Landmark Acquisition of Red Hat for $34 Billion; Defines Open, Hybrid Cloud Future". Red Hat. July 9, 2019. Archived from the original on December 16, 2020. Retrieved July 9, 2019.
+"IBM To Accelerate Hybrid Cloud Growth Strategy And Execute Spin-Off Of Market-Leading Managed Infrastructure Services Unit". IBM Corporation. October 8, 2020. Archived from the original on January 7, 2021. Retrieved October 10, 2020.
+Vengattil, Munsif (October 9, 2020). "IBM to break up 109-year old company to focus on cloud growth". Reuters. Archived from the original on October 15, 2020. Retrieved October 10, 2020.
+Goodwin, Jazmin (October 8, 2020). "IBM spins off a quarter of the company to focus on the cloud". CNN Business. Archived from the original on November 26, 2020. Retrieved October 10, 2020.
+Bursztynsky, Jessica (October 8, 2020). "IBM shares rise on plans to spin off its IT infrastructure unit and focus on the cloud business". CNBC. Archived from the original on November 11, 2020. Retrieved October 10, 2020.
+Fitch, Asa; Sebastian, Dave (October 8, 2020). "IBM to Spin Off Services Unit to Accelerate Cloud-Computing Pivot". The Wall Street Journal. Archived from the original on January 6, 2021. Retrieved October 10, 2020.
+Bendor-Samuel, Peter (October 9, 2020). "IBM Splits Into Two Companies". Forbes. Archived from the original on November 29, 2020. Retrieved October 10, 2020.
+Moorhead, Patrick (October 9, 2020). "IBM Spinning Off Infrastructure Managed Services Group To Focus On Cloud Is A Good Move". Forbes. Archived from the original on November 9, 2020. Retrieved October 10, 2020.
+Deutscher, Maria (January 7, 2021). "IBM names Martin Schroeter as CEO of $19B NewCo services spinoff". SiliconANGLE. Archived from the original on January 11, 2021. Retrieved February 23, 2021.
+"IBM names former financial chief Martin Schroeter as head of new IT infrastructure services company". The Economic Times. Reuters. January 8, 2021. Archived from the original on June 14, 2021. Retrieved February 23, 2021.
+Arvind Krishna (March 7, 2022). "Update on Our Actions: War in Ukraine". IBM. Retrieved March 7, 2022.
+"IBM finally shutters Russian operations, lays off staff". The Register. June 7, 2022.
+McDowell, Steve. "IBM Extends Watson.x Governance & Compliance with Manta Acquisition". Forbes. Retrieved October 24, 2023.
+"IBM suspends ads on X after corporate ads appeared next to pro-Nazi content". Reuters. November 17, 2023.
+Sorkin, Andrew Ross; Mattu, Ravi; Warner, Bernhard; Kessler, Sarah; de la Merced, Michael J.; Hirsch, Lauren; Walt, Vivienne (November 17, 2023). "Advertisers Push Back at Social Media Firms over Antisemitism". The New York Times.
+"IBM to buy Software AG's enterprise integration platforms for $2.3 billion". Yahoo Finance. December 18, 2023. Retrieved December 18, 2023.
+"Contact Us". IBM. Archived from the original on December 30, 2020. Retrieved October 20, 2009.
+Salmans, Sandra (January 9, 1982). "Dominance Ended, I.B.M. Fights Back". The New York Times. Archived from the original on August 27, 2020. Retrieved January 2, 2015.
+Zuckerman, Laurence (September 17, 1997). "IBM's New Headquarters Reflects A Change in Corporate Style". The New York Times. Archived from the original on March 5, 2016. Retrieved August 22, 2016.
+"On the Dedication of the Louis V. Gerstner, Jr., Center for Learning – THINK Blog". IBM. October 2, 2018. Archived from the original on August 31, 2020. Retrieved October 2, 2018.
+"Property Overview". Dolce Hotels and Resorts. Archived from the original on September 17, 2016. Retrieved August 12, 2016.
+"Company Overview of IBM China Company Limited". Bloomberg. Archived from the original on June 26, 2020. Retrieved September 19, 2018.
+"Watson IoT Headquarters". IBM. May 17, 2017. Archived from the original on October 12, 2020. Retrieved October 6, 2018.
+Forgey, Benjamin (March 24, 1990). "In the IBM Honoring the Corporation's Buildings". The Washington Post.
+"Environmental Protection". IBM. May 3, 2008. Archived from the original on September 3, 2007. Retrieved May 17, 2008.
+"Village of Endicott Environmental Investigations". Archived from the original on October 25, 2020. Retrieved January 28, 2015.
+Chittum, Samme (March 15, 2004). "In an I.B.M. Village, Pollution Fears Taint Relations With Neighbors". New York Times Online. Archived from the original on August 8, 2020. Retrieved May 1, 2008.
+Owens, Jeremy C. "IBM earnings and revenue continue to shrink, stock falls 6%". MarketWatch. Archived from the original on April 28, 2021. Retrieved April 29, 2021.
+"IBM Market Cap 2006–2021 | IBM". www.macrotrends.net. Archived from the original on April 29, 2021. Retrieved April 29, 2021.
+"Fortune 500". Fortune. Archived from the original on December 31, 2020. Retrieved April 29, 2021.
+Sorkin, Andrew Ross (October 20, 2014). "The Truth About IBM's Buybacks". DealBook. Archived from the original on April 10, 2021. Retrieved April 29, 2021.
+Saft, James (October 21, 2014). "IBM and the financial engineering economy: James Saft". Reuters. Archived from the original on April 29, 2021. Retrieved April 29, 2021.
+"Boring IBM Just Got a Lot More Interesting". Bloomberg.com. October 8, 2020. Archived from the original on April 29, 2021. Retrieved April 29, 2021.
+"IBM Investing $3B in Internet of Things". PCMAG. Archived from the original on August 9, 2020. Retrieved May 28, 2015.
+"Digital workplace services". IBM. Archived from the original on December 19, 2020. Retrieved March 27, 2020.
+"IBM Products". IBM. Archived from the original on June 13, 2017. Retrieved August 13, 2016.
+"Data Center Knowledge – SoftLayer: $78 Million in First Quarter Revenue". May 17, 2011. Archived from the original on October 25, 2020. Retrieved August 14, 2016.
+"Cloud computing news: Security". ibm.com. October 21, 2015. Archived from the original on December 29, 2017. Retrieved September 23, 2016.
+"IBM delivers Power-based chip for Microsoft Xbox 360 worldwide launch". IBM. October 25, 2005. Archived from the original on December 17, 2006. Retrieved March 22, 2007.
+Staff Writer (June 8, 2011). "IBM microprocessors drive the new Nintendo WiiU console". mybroadband.co.za. Archived from the original on September 26, 2020. Retrieved June 17, 2011.
+Leung, Isaac (June 8, 2011). "IBM's 45nm SOI microprocessors at core of Nintendo Wii U". Electronics News. Archived from the original on July 14, 2011. Retrieved June 17, 2011.
+"Building a smarter planet". Asmarterplanet.com. Archived from the original on October 15, 2018. Retrieved May 23, 2010.
+"New research initiative sees IBM commit $3 bn". San Francisco News.Net. Archived from the original on July 14, 2014. Retrieved July 10, 2014.
+Dignan, Larry (August 23, 2016). "IBM launches flash arrays for smaller enterprises, aims to court EMC, Dell customers". ZDNet. Archived from the original on October 21, 2020. Retrieved August 23, 2016.
+"IBM. Global locations for your global business". IBM. Archived from the original on November 11, 2020. Retrieved December 9, 2019.
+"Kenexa Corporation | Company Profile from Hoover's". Hoovers.com. Archived from the original on June 15, 2012. Retrieved October 8, 2015.
+Hardy, Quentin (October 28, 2015). "IBM to Acquire the Weather Company". The New York Times. Archived from the original on December 14, 2020. Retrieved September 19, 2018.
+Lohr, Steve (January 12, 2010). "Big Blue's Smarter Marketing Playbook". The New York Times. Archived from the original on January 16, 2010. Retrieved August 8, 2010.
+"At IBM Research, a constant quest for the bleeding edge". PcSite. August 2, 2010. Retrieved August 8, 2010.
+"Smart Grid". IBM. Archived from the original on April 9, 2011.
+"Smarter Water Management". IBM. Archived from the original on April 18, 2010.
+"Smart traffic". IBM. Archived from the original on May 4, 2010.
+"Smarter Buildings". IBM. Archived from the original on June 14, 2011.
+"About developerWorks". IBM developerWorks. Archived from the original on May 19, 2018. Retrieved August 22, 2016.
+"What is Watson?". IBM. Archived from the original on October 30, 2016. Retrieved August 13, 2016.
+"Watson Oncology". Memorial Sloan Kettering Cancer Center. Archived from the original on October 13, 2016. Retrieved August 13, 2016.
+Upbin, Bruce. "IBM's Watson Now A Customer Service Agent, Coming To Smartphones Soon". Forbes. Archived from the original on November 12, 2020. Retrieved August 13, 2016.
+"IBM Unveils Q System One Quantum Computer". ExtremeTech. January 10, 2019. Archived from the original on December 24, 2020. Retrieved February 25, 2019.
+"NYPD changes the crime control equation by transforming the way it uses information" (PDF). Road Armonk, NY: IBM Corporation. Archived (PDF) from the original on January 8, 2021. Retrieved June 8, 2019.
+Miller, Joe (March 13, 2020). "IBM to build Europe's first quantum computer in Germany". Financial Times. Archived from the original on November 19, 2020. Retrieved July 20, 2021.
+"IBM Policy". IBM.
+"IBM exits facial recognition business, calls for police reform". Reuters. June 9, 2020.
+"IBM steps up its cloud partnership strategy with AWS deal". Tech Target. May 13, 2022. Retrieved May 18, 2022.
+"How Quantum Computing Will Transform Our World". Time. Retrieved February 7, 2023.
+"IBM to Spin off $19B Business to Focus on Cloud Computing". Associated Press. October 8, 2020. Retrieved October 13, 2020.
+"IBM to name infrastructure services business 'Kyndryl' after spinoff". Reuters. April 12, 2021. Archived from the original on July 25, 2021. Retrieved July 25, 2021.
+"IBM to Acquire Software Provider Turbonomic for Over $1.5 Billion". NDTV Gadgets 360. Reuters. April 30, 2021. Archived from the original on May 1, 2021. Retrieved May 1, 2021.
+Condon, Stephanie (January 21, 2022). "IBM sells Watson Health assets to investment firm Francisco Partners". ZDNet. Archived from the original on January 21, 2022. Retrieved January 21, 2022.
+"IBM and Rapidus Form Strategic Partnership to Build Advanced Semiconductor Technology and Ecosystem in Japan". IBM Newsroom. December 12, 2023.
+"GlobalFoundries sues IBM, says trade secrets were unlawfully given to Japan's Rapidus". CNBC. April 20, 2023.
+"IBM Research: Global labs". Archived from the original on December 16, 2020. Retrieved May 28, 2015.
+"IBM's expenditure on research and development from 2005 to 2015 (in billion U.S. dollars)". Statista. Archived from the original on November 11, 2020. Retrieved August 12, 2016.
+Bort, Julie. "Ginni Rometty just set a big goal for IBM: spending $4 billion to bring in $40 billion". Business Insider. Archived from the original on August 9, 2020. Retrieved August 12, 2016.
+"IBM launches biggest Linux lineup ever". IBM. March 2, 1999. Archived from the original on November 10, 1999.
+Hamid, Farrah (May 24, 2006). "IBM invests in Brazil Linux Tech Center". LWN.net. Archived from the original on January 8, 2021. Retrieved July 21, 2016.
+"Interview: The Eclipse code donation". IBM. November 1, 2001. Archived from the original on December 18, 2009.
+"IBM Archives: "IBM" atoms". IBM. January 23, 2003. Archived from the original on November 11, 2020. Retrieved July 22, 2012.
+"The Nobel Prize in Physics 1986 – Press Release". Nobel Media AB. October 15, 1986. Archived from the original on August 2, 2018. Retrieved January 1, 2014.
+Steele, Guy L. (2011). "An interview with Frances E. Allen". Communications of the ACM. 54: 39. doi:10.1145/1866739.1866752. S2CID 11847872.
+Selinger, Evan, ed. (2006). Postphenomenology: A Critical Companion to Ihde. State University of New York Press. p. 228. ISBN 0-7914-6787-2. Archived from the original on January 9, 2021. Retrieved October 22, 2020.
+Morgan, Conway Lloyd; Foges, Chris (2004). Logos, Letterheads & Business Cards: Design for Profit. Rotovision. p. 15. ISBN 2-88046-750-0.[permanent dead link]
+Walters, E. Garrison (2001). The Essential Guide to Computing: The Story of Information Technology. Publisher: Prentice Hall PTR. p. 55. ISBN 0-13-019469-7. "big blue ibm."
+"IBM Archives". IBM. January 23, 2003. Archived from the original on January 5, 2021. Retrieved November 24, 2009.
+Clayton, Ward. "IBM and Masters Celebrate 20 Years". Masters. Archived from the original on August 8, 2020. Retrieved August 12, 2016.
+Weinman, Sam. "IBM CEO Ginni Rometty is Augusta National's third female member". Golf Digest. Archived from the original on January 9, 2021. Retrieved August 12, 2016.
+Snyder, Benjamin. "Why IBM dominates the U.S. Open". Forbes. Archived from the original on October 25, 2020. Retrieved August 12, 2016.
+DiCarlo, Lisa. "IBM, Olympics Part Ways After 40 Years". Forbes. Archived from the original on November 13, 2020. Retrieved August 12, 2016.
+Jinks, Beth (June 5, 2012). "IBM Ends Its NFL Sponsorship Over Difference in Views". Bloomberg.com. Bloomberg L.P. Archived from the original on August 28, 2020. Retrieved August 12, 2016.
+"Best Global Brands Ranking for 2012". Interbrand. Archived from the original on May 31, 2013. Retrieved June 6, 2013.
+"IBM #1 in Green Rankingss for 2012". thedailybeast.com. Archived from the original on September 29, 2015. Retrieved October 22, 2012.
+Santoli, Michael (June 23, 2012). "The World's Most Respected Companies". Barron's. Archived from the original on October 16, 2020. Retrieved June 23, 2012.
+"Tech Consulting Firm Rankings 2012: Best Firms in Each Practice Area". Vault. Archived from the original on October 11, 2011. Retrieved December 29, 2011.
+"The World's Most Valuable Brands". Forbes. Archived from the original on October 6, 2012. Retrieved September 2, 2015.
+Thomas, Patrick (December 12, 2020). "The Best-Managed Companies of 2020—and How They Got That Way". Wall Street Journal. Archived from the original on February 21, 2021. Retrieved February 2, 2021.
+Ina Fried (March 8, 2022). "Tech companies increase donations to Ukraine". AXIOS. Retrieved March 8, 2022.
+"IBM's ESG Datasheet for 2020Q4". IBM. June 30, 2021. Archived from the original on November 10, 2021. Alt URL Archived November 10, 2021, at the Wayback Machine
+"IBM Commits To Net Zero Greenhouse Gas Emissions By 2030". IBM Newsroom. IBM. February 16, 2021. Retrieved July 22, 2022. "IBM today announced that it will achieve net zero greenhouse gas emissions by 2030 to further its decades-long work to address the global climate crisis. The company will accomplish this goal by prioritizing actual reductions in its emissions, energy efficiency efforts and increased clean energy use across the more than 175 countries where it operates."
+"International Business Machines Corp. (IBM) profile". HRC Corporate Equality Index Score.[permanent dead link]
+"IBM". Working Mother. Archived from the original on October 16, 2020. Retrieved April 28, 2018.
+"The IBM Corporate Service Corps". IBM CSC. Archived from the original on November 24, 2019. Retrieved August 12, 2016.
+Chong, Rachael; Fleming, Melissa (November 5, 2014). "Why IBM Gives Top Employees a Month to Do Service Abroad". Harvard Business Review. Archived from the original on November 26, 2020. Retrieved August 12, 2016.
+"Extreme Blue web page". 01.ibm.com. September 7, 2007. Archived from the original on February 13, 2019. Retrieved May 23, 2010.
+Taft, Derryl (April 25, 2016). "IBM Launches Distinguished Designer Program". eWeek. Retrieved August 12, 2016.
+Smith, Paul Russell (1999). Strategic Marketing Communications: New Ways to Build and Integrate Communications. Kogan Page. p. 24. ISBN 0-7494-2918-6. Archived from the original on January 9, 2021. Retrieved October 22, 2020.
+"IBM Attire". IBM Archives. IBM Corp. January 23, 2003. Archived from the original on August 14, 2018. Retrieved May 31, 2012.
+Goldman, David. "IBM stands for 'I've Been Moved'". CNN Money. Archived from the original on January 6, 2021. Retrieved August 12, 2016.
+"IBM stands for "I'm by myself' for teleworkers of the blue giant". African America. Archived from the original on February 2, 2017. Retrieved August 12, 2016.
+Intelligent Mentoring. IBM Press. November 11, 2008. ISBN 978-0-13-700949-7. Archived from the original on January 9, 2021. Retrieved August 12, 2016.
+Logan, John (December 2006). "The Union Avoidance Industry in the United States" (PDF). British Journal of Industrial Relations. 44 (4): 651–675. doi:10.1111/j.1467-8543.2006.00518.x. S2CID 155066215. Archived from the original (PDF) on August 17, 2016. Retrieved December 17, 2010.
+"IBM Global Unions Links". EndicottAlliance.org. Archived from the original on October 14, 2013. Retrieved October 12, 2013.
+Bort, Julie. "In Japan, IBM employees have formed a football team complete with pro stadium, cheerleaders and televised games". Business Insider. Archived from the original on January 9, 2021. Retrieved August 12, 2016.
+"Switch to Macs from PCs reportedly saves IBM $270 per user". CIO. November 5, 2015. Archived from the original on August 20, 2018. Retrieved August 12, 2016.
+Lebowitz, Shana (May 20, 2016). "After overhauling its performance review system, IBM now uses an app to give and receive real-time feedback". Business Insider. Archived from the original on October 12, 2020. Retrieved May 20, 2016.
+"Timothy D. Cook Profile". Forbes. Archived from the original on May 18, 2012. Retrieved November 10, 2017.
+"Executive Biographies – Lisa Su". Amd.com. Archived from the original on January 3, 2018. Retrieved October 10, 2014.
+"Leadership Team". www.cadence.com. Archived from the original on December 25, 2021. Retrieved December 25, 2021.
+Kearns, David T (May 31, 2005). "Crossing the Bridge: Family, Business, Education, Cancer, and the Lessons Learned". Meliora Press.
+La Monica, Paul R. (February 8, 2008). "Fair Isaac CEO: FICO criticism isn't 'fair'". CNN Money. Archived from the original on October 22, 2020. Retrieved December 28, 2017.
+DeLaat, Jacqueline (2000). "Harris, Patricia Roberts". Women in World History, Vol. 7: Harr-I. Waterford, CT: Yorkin Publications. pp. 14–17. ISBN 0-7876-4066-2.
+Miller, Zeke J. (November 19, 2013). "Wisconsin Gov. Scott Walker: A 2016 Contender But Not A College Graduate". TIME. Archived from the original on December 9, 2020. Retrieved May 1, 2015.
+"Official Manual of the State of Missouri, 1993–1994". p. 157.[permanent dead link]
+"Katherine Harris' Biography". Project Vote Smart. Archived from the original on January 24, 2012. Retrieved April 30, 2006.
+"New York Times (May 31, 1998)". The New York Times. May 31, 1998. Archived from the original on October 10, 2013. Retrieved October 30, 2020.
+"Board of Directors — Officers". National Association of Sports Officials. Archived from the original on September 15, 2007. Retrieved September 27, 2007.
+"Board of Directors". IBM. March 9, 2020. Archived from the original on July 8, 2020. Retrieved March 11, 2020.
+McFarland, Matt. "Warren Buffett never liked tech stocks. So why does he own Apple?". The Washington Post. Archived from the original on November 8, 2020. Retrieved August 11, 2016.
+
+ Belvedere, Matthew J. (May 4, 2018). "Warren Buffett says Berkshire Hathaway has sold completely out of IBM". CNBC. Archived from the original on May 4, 2018. Retrieved May 4, 2018.
+
+Further reading
+For additional books about IBM, biographies, memoirs, technology and more, see History of IBM § Further reading.
+
+ Bakis, Henry (1987). "Telecommunications and the Global Firm". In F. E. Ian Hamilton (ed.). Industrial change in advanced economies. London: Croom Helm. pp. 130–160. ISBN 978-0-7099-3828-6.
+ Bauer, Roy A.; et al. (1992). The Silverlake Project: Transformation at IBM (AS/400). Oxford University Press.
+ Black, Edwin (2001). IBM and the Holocaust: The Strategic Alliance Between Nazi Germany and America's Most Powerful Corporation. Dialog Press. ISBN 0-914153-10-2.
+ Carroll, Paul (1993). Big Blues: The Unmaking of IBM. Crown Publishers. ISBN 978-0-517-59197-0.
+ Garr, Doug (1999). IBM Redux: Lou Gerstner & The Business Turnaround of the Decade. Harper Business.
+ Gerstner, Louis V. Jr. (2002). Who Says Elephants can't Dance?. HarperCollins. ISBN 0-00-715448-8.
+ Greulich, Peter E. (2014). A View from Beneath the Dancing Elephant: Rediscovering IBM's Corporate Constitution. MBI Concepts Corporation. ISBN 978-0-9833734-6-9.
+ Harwood, John (2011). The Interface: IBM and the Transformation of Corporate Design, 1945–1976. University of Minnesota Press. ISBN 978-0-8166-7039-0.
+ Heller, Robert (1994). The Fate of IBM. Little Brown.
+ Mercer, David (1987). IBM: How the World's Most Successful Corporation is Managed. Kogan Page.
+ Mercer, David (1988). The Global IBM: Leadership in Multinational Management. Dodd, Mead. p. 374. ISBN 978-0-396-09259-9.
+ Mills, D. Quinn; Friesen, G. Bruce (1996). Broken Promises: An Unconventional View of What Went Wrong at IBM. Harvard Business School. ISBN 0-87584-654-8..
+ Pugh, Emerson W. (1996). Building IBM: Shaping an Industry. MIT Press.
+ Slater, Robert (1999). Saving Big Blue: IBM's Lou Gerstner. McGraw Hill.
+ Steinhilper, Ulrich (2006). Don't Talk – Do It! From Flying To Word Processing. Independent Books. ISBN 1-872836-75-5.
+ von Simson, Ernest (2009). The Limits of Strategy: Lessons in Leadership from the Computer Industry. iUniverse. ISBN 978-1-4401-9258-6.
+ Watson, Thomas Jr. (1990). Father, Son & Co: My Life at IBM and Beyond. Bantam Books. ISBN 0-553-29023-1.
+
+External links
+IBM
+at Wikipedia's sister projects
+
+ Definitions from Wiktionary
+ Media from Commons
+ News from Wikinews
+ Quotations from Wikiquote
+ Texts from Wikisource
+ Textbooks from Wikibooks
+ Resources from Wikiversity
+
+ Official website Edit this at Wikidata
+ IBM companies grouped at OpenCorporates
+ Business data for IBM:
+ GoogleSEC filingsYahoo!
+
+ vte
+
+IBM
+Links to related articles
+Authority control databases Edit this at Wikidata
+Categories:
+
+ IBM1888 establishments in New York (state)Technology companies established in 1888American companies established in 1888Cloud computing providersCollier Trophy recipientsCompanies based in Westchester County, New YorkCompanies in the Dow Jones Industrial AverageCompanies in the Dow Jones Global Titans 50Companies in the S&P 500 Dividend AristocratsCompanies listed on the New York Stock ExchangeComputer companies of the United StatesComputer hardware companiesComputer systems companiesData companiesData quality companiesDisplay technology companiesElectronics companies of the United StatesInformation technology consulting firms of the United StatesMultinational companies headquartered in the United StatesNational Medal of Technology recipientsOutsourcing companiesPoint of sale companiesSoftware companies based in New York (state)Storage Area Network companiesSoftware companies of the United StatesInternational information technology consulting firms
+