OpenBB
Product
Commercial OpenBB Workspace Snowflake Native App Security
Open Source Open Data Platform (ODP)
Introducing OpenBB Workspace Lite for small investment teams July 21, 2026 — 6 MIN Introducing OpenBB Workspace Lite for small investment teams Read post OpenBB Workspace Demo: Portfolio Analysis, Apps Marketplace, MCP & AI Agents July 1, 2026 — 11 MIN OpenBB Workspace Demo: Portfolio Analysis, Apps Marketplace, MCP & AI Agents Watch demo
Solutions
App Showcase App Marketplace
By audience Buy-Side AI Vendor
Introducing the OpenBB App Marketplace May 12, 2026 — 5 MIN Introducing the OpenBB App Marketplace Read post Introducing Workspace MCP: agentic financial workflows, governed by design May 26, 2026 — 8 MIN Introducing Workspace MCP: agentic financial workflows, governed by design Read post
Resources
Blog Videos About Documentation
Comparison
Streamlit Tableau Power BI
OpenBB Workspace Demo: Portfolio Analysis, Apps Marketplace, MCP & AI Agents July 1, 2026 — 11 MIN OpenBB Workspace Demo: Portfolio Analysis, Apps Marketplace, MCP & AI Agents Watch demo
Pricing
Commercial
OpenBB Workspace Snowflake Native App Security
Open Source
Open Data Platform (ODP)
App Showcase App Marketplace Buy-Side AI Vendor
Resources
Blog Videos About Documentation
Comparison
Streamlit Tableau Power BI
Pricing
Back to blog
Didier Lopes

Author

Didier Lopes

SHARE

How we used OpenAI to extract insights from team surveys

July 12, 2023 — 9 MIN

How we used OpenAI to extract insights from team surveys

Motivation

In February, I posted about how at OpenBB we have developed a monthly team survey and automated the process of requesting information through Slack and Airtable. You can find more on that post here.

slack-airtable-graphic

This made me think that even though I have access to all this data, which OpenBB has fully available here, I still have to spend some time looking at the data to extract insights.

What if I could automate that analysis using OpenAI? This is what I set out to build, and this post will focus on how I went from idea to implementation.

Requirements

I already had a notebook that I used to analyze our Airtable data with our team survey in it. However, that analysis was quite “heavy,” and it was not straightforward to extract insights. Thus, one of the requirements was to use OpenAI to analyze the team survey feedback for the current month and highlight anything worth mentioning.

Additionally, I wanted to compare the team’s experience to the prior month to understand if we were improving and identify areas for further improvement.

Finally, based on these insights, I wanted OpenAI to suggest what OpenBB, as a company, could do to improve our culture.

To achieve this using an OpenAI model, I could either export the team survey responses from Airtable in CSV and copy-paste them into ChatGPT, or I could automate the data retrieval using the Airtable API. Being an engineer, why would I do something in 5 minutes when I can spend 1 day automating it? 🤣

Lastly, I didn’t want to run this script and have to copy-paste the output into our Slack group so that everyone on the team could have access to the overall analysis and provide feedback/suggestions. Therefore, I would like to have a Slack integration that sends the output in a specifically formatted way to our Slack channel.

So, the idea is as follows:

  1. Retrieve team feedback responses from Airtable
  2. Extract insights from the team survey data using OpenAI
  3. Send the insights output to the OpenBB Slack channel

Implementation

Slack API

First of all, I went to the Slack API page. There, I created an app named “Employee Voice” and selected the “OpenBB” workspace, as shown below:

OpenBB Terminal

After clicking “Create App,” I proceeded to update the display information.

OpenBB Terminal

Then I go into “Incoming Webhooks” and select the channel I’m interested in posting messages to. That should be all the settings you need to configure for your app.

OpenBB Terminal

The webhook URL will be necessary, so I copied it and added it to the following script. For the channel name, I used my name, “Didier Lopes”, since I was just testing if it worked. As for the message, I used the infamous “Hello World” text.

Here is a sample that you can use to test whether you can successfully send yourself a direct message using the Slack API.

SLACK_CHANNEL_NAME="Didier Lopes"

insight="Hello World"

payload = {
    'text': insight,
    'channel': SLACK_CHANNEL_NAME,
}

req = Request(SLACK_WEBHOOK_URL, json.dumps(payload).encode('utf-8'))
try:
    response = urlopen(req)
    response.read()
    
    print("SUCCESS: Message with insights sent to slack\n")
except HTTPError as e:
    print(f"Request failed: {e.code} {e.reason}\n")
except URLError as e:
    print(f"Server connection failed: {e.reason}\n")
 

Airtable API

At OpenBB, we are using Airtable to automate the monthly team survey questionnaire and store the associated data. I wrote more about that process in the blog post here.

Now, I want to have programmatic access to this data.

Firstly, I need to obtain the Airtable API key, which you can get from the Airtable Developer Hub. Secondly, I navigate to Airtable and locate the table that contains the data of interest, as shown below:

OpenBB Terminal

The name of the table, “OpenBB_monthly”, corresponds to the “TABLE NAME” that will be necessary. Additionally, when you are on this table view, your URL will have the following format: https://airtable.com/XXX. That XXX is your “BASE ID,” which will be the final element necessary to retrieve data from Airtable.

Next, run the following script to ensure that you have access to this data.

AIRTABLE_API_KEY=<Located in Airtable Developer Hub>
AIRTABLE_BASE_ID=<Located in URL when accessing data>
AIRTABLE_TABLE_NAME="OpenBB_monthly"

response = requests.get(
    url=f'https://api.airtable.com/v0/{AIRTABLE_BASE_ID}/{AIRTABLE_TABLE_NAME}',
    headers={'Authorization': f'Bearer {AIRTABLE_API_KEY}'}
)

# Check if the data has been loaded correctly
if response.status_code == 200:
    data = response.json()["records"]
else:
    print(f"Error: {response.status_code}")

print(data)

OpenAI API

Finally, go to OpenAI Developer platform and grab your OpenAI API key.

OpenBB Terminal

Once you have that, you are pretty much ready to test whether this works or not. In this case, we assume you have access to the data from Airtable, so you can test if the OpenAI code is set up correctly with the following:

data_previous_month=<dataframe with raw survey data from previous month>
data_current_month=<dataframe with raw survey data from current month>
current_month=<current month date>

openai.api_key=<Located in OpenAI Developer platform>
response = openai.ChatCompletion.create(
model="gpt-4",  # you can use a different model
messages=[
        {"role": "system", "content": "You are a Chief of Staff with a MSc. in Data analysis and are trying to improve the culture of the company."},
        {"role": "user", 
        "content": 
            f"""
    This table represents the company survey for the previous month: {data_previous_month}

    This table represents the company survey for this month: {data_current_month}.

    Based on this data, can you do 3 things:
    
    1. Summarize main differences since last month
    2. Summarize main highlights for current month
    3. Create suggestions for what could be done to improve those areas
    
    Please use the following format for the output:
        As the title use the following: Insights from team survey in {current_month}.
        Follow the title by 2 line breaks.
        Use bullet points within each of the points mentioned above.
        Between the 3 points, use 1 line breaks, a line with ----------------------- and another line break.
        Use `` when referring to a component like `Reward` or `Growth`.
        Do not use asterisks '*' or '**'.
        When referring to to Engineering or Product, Marketing, Design, Finance wrap them around asterisk, e.g. _Engineering_.
            """
        },
    ]
)

print(response.choices[0].message.content)

Glue it together!

Once you have the scripts, merging them is straightforward. I will show you what the input vs. output looks like.

Here is OpenBB’s team survey data from June of 2023:

OpenBB Terminal

If I run the script here, as shown below (yes, you guessed it right — I open-sourced this project as usual. I hope you and your team find it useful):

$ python extract_insights_from_last_team_survey.py

This is the expected output if the script runs successfully.

Loading environment variables...

Loading team survey data from Airtable...

Processing data from Airtable...

Extracting insights from team survey data...

Sending insights to Slack through a message...

SUCCESS: Message with insights sent to slack 
OpenBB Terminal

We’re almost there! It doesn’t make sense for us to manually run this script every month. Plus, software engineers are known for their laziness (which is actually a virtue of a great programmer), so let’s create a GitHub action to automate this process.

To begin, create a file called “main.yml” in the “.github/workflows” directory. This workflow will be divided into three main sections:

“When” :  Specifies when this GitHub action should run.

on:
  push:
    branches:
      - main
  schedule:
    - cron: '0 0 3 * *'

The first section, “on: push: branches: [main]”, means that whenever there is a code push to the “main” branch, this workflow will be triggered. This feature allows us to quickly test whether the action functions as expected.

The “schedule-cron” makes it so that the yaml gets run at specific dates and times.

Pre-requirements:  What do we need in advance for this to work?

env:
  SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
  OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
  AIRTABLE_API_KEY: ${{ secrets.AIRTABLE_API_KEY }}
  AIRTABLE_BASE_ID: ${{ secrets.AIRTABLE_BASE_ID }}
  AIRTABLE_TABLE_NAME: ${{ secrets.AIRTABLE_TABLE_NAME }}

All of these variables need to be set as action secrets. You can do this by selecting the “Settings” tab above, then going into “Scripts and variables,” and selecting “New repository secret.” Fill in the information accordingly, as shown below:

OpenBB Terminal

What: What commands are we running with this GitHub action? In our case, these are the ones we are interested in.

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - name: checkout repo content
        uses: actions/checkout@v2

      - name: setup python
        uses: actions/setup-python@v2
        with:
          python-version: 3.9

      - name: install python packages
        run: |
          python -m pip install --upgrade pip
          pip install python-dotenv
          pip install pandas
          pip install openai

      - name: extract insights from team feedback
        run: |
          python extract_insights_from_last_team_survey.py

And that’s it! You now have a complete automation pipeline from employee feedback to insights within seconds.

I hope you enjoyed reading this post, and I would love to hear your feedback. Do you appreciate the level of technical detail?

Any comments are very helpful. Thank you!

Overview

  • Motivation
  • Requirements
  • Implementation
  • Slack API
  • Airtable API
  • OpenAI API
  • Glue it together!

Recommended For You

OpenBB belongs to everyone
August 25, 2026 — 8 MIN

OpenBB belongs to everyone

Read more
SnapTrade brings connected brokerage account data into OpenBB
August 5, 2026 — 5 MIN

SnapTrade brings connected brokerage account data into OpenBB

Read more
Carbon Arc brings card spend, web traffic, and more into OpenBB
July 23, 2026 — 7 MIN

Carbon Arc brings card spend, web traffic, and more into OpenBB

Read more

Analysts shouldn't need a data scientist to get an answer

The firms that fix that first will have a structural advantage

Start now
OpenBB
OpenBB Workspace Snowflake Native App Security Open Data Platform (ODP)
App Showcase App Marketplace Buy-Side AI Vendor
Blog Videos About Documentation Streamlit Tableau Power BI
Pricing Open Startup Support Contact Sitemap
Product
OpenBB Workspace Snowflake Native App Security
Open Data Platform (ODP)
Solutions
App Showcase App Marketplace Buy-Side AI Vendor
Resources
Blog Videos About Documentation Streamlit Tableau Power BI
Other
Pricing Open Startup Support Contact Sitemap

Copyright © 2026 OpenBB Inc. All rights reserved.
Privacy Policy Terms Trust Center OSS Friends

August 25, 2026

OpenBB belongs to everyone

Didier Lopes

Founder & CEO, OpenBB


TL;DR: We are open-sourcing the entire OpenBB product suite under a permissive open source license

Today is bittersweet.

On December 20, 2020, over the Christmas holidays, I wrote the first lines of Gamestonk Terminal, what would eventually become OpenBB. My flight home to visit my parents had been cancelled because of COVID, so I stayed in London and started building a tool to streamline my own investment research process.

At the time, the idea was simple: individuals (and firms) should be able to own their research platforms. They shouldn't have to adapt their workflows to whatever a data or software vendor decided to build. They should own the entire experience - from the data they connect to, to the interface analysts and PMs use every day, to the APIs, models, skills, tools and AI agents that increasingly form part of the investment process.

Over the last almost six years, OpenBB evolved far beyond anything I imagined when writing those first lines of code. We started as an open-source terminal and went on to build the SDK (now Open Data Platform), the OpenBB Bot, the OpenBB Workspace, the OpenBB Copilot, the Excel Add-in, and an ecosystem of applications created by our team, our partners and the community.

We kept innovating and being at the forefront of what user experience should be. I was prepared to die on the hill that if we were to become the financial infrastructure software for the buy-side and sell-side, then we could not monetize data. Monetizing data would have made us a data vendor. The margins would have been higher, but the incentive would have shifted from offering a better UI/UX to selling more datasets. Selling an infrastructure platform is incredibly challenging, for many reasons. And so we died on that hill. Along the way, we built an incredible community, reached millions of people through our open-source project, worked with some of the largest financial institutions in the world and assembled a team that consistently built far beyond what should have been possible for a company of 10 people. There is a lot to be proud of.

But despite all of that, we couldn't find the product-market fit needed to build a sustainable business around this vision within the time we had.

As a founder, I've always bet the house on the next customer, the next feature or the next launch to change the trajectory of the company. Until even just last weeks, when we announced self-serve Workspace Lite. If we were ever going to close doors, then we never wanted to look back and think "what if".

In hindsight, we could obviously have made different decisions - e.g., surrounding data, or going more vertical with clients and their workflows. But short-term monetization was not something I was prioritizing over where I thought the industry was heading. Ultimately, I wanted us to stand for something.

In the last phase of the company, I explored many paths to give OpenBB a better home. We spoke with larger companies that shared parts of our vision and tried to find a home where the products, and ideally the team behind them, could continue to grow. Ultimately, we weren't able to make that happen.

I left London with my wife to build OpenBB and dedicated almost six years of my life to it. So did the team. We built at the intersection of finance, AI, open source and software infrastructure, often working on problems before they became obvious to the broader market.

Before MCP existed, we had created our own API protocol so agents could interact with the data and analytics widgets in the workspace. In 2023, we built askobb, which let anyone ask investment research questions in natural language that required joining multiple different datasets together.

What this team created deserves to continue existing.

More importantly, I still believe the original vision is inevitable. The future of financial software is not a single platform every firm is forced to use. It is thousands of firms building environments that reflect how they actually work - their own data, internal systems, investment processes, risk models and compliance requirements. Increasingly, their own APIs, MCP servers, models and AI agents too.

If that future is coming, then the technology we built shouldn't disappear simply because we weren't able to commercialize it successfully.

It should become available to everyone.

Today, with the support of the team and OSS Capital, we are committing to releasing the entire OpenBB product suite under a permissive license. This includes OpenBB Workspace, Open Data Platform, OpenBB Copilot and the OpenBB Excel Add-in.

These products represent over 5 years of engineering, millions of dollars invested in R&D and thousands of decisions, experiments and iterations with users. They will become a foundation that individuals, startups, data providers and financial institutions can freely use, modify and build on top of.

We will share more details about the order and timing of each release as we complete that work. In parallel, we will determine the right long-term structure to steward the projects, support contributors and preserve what made OpenBB special in the first place. Existing customers and users of the hosted products will hear from us directly about timelines.

For the partners who built applications for the OpenBB ecosystem, I hope this decision makes your products even more valuable. You already did the work of turning your datasets and analytics into applications that users can interact with. Now, those applications will be able to run inside infrastructure that firms can fully own, extend and customize, while combining them with data and tools from other providers across the ecosystem.

The same applies to the broader community. Developers will be able to use the entire OpenBB stack as a starting point rather than rebuilding the same infrastructure from scratch. Firms will be able to deploy it, adapt it to their requirements and connect it to the systems where their differentiated knowledge already lives.

Over the years, many talented people helped make OpenBB what it is today - employees, contributors, partners. Every one of them left a mark on the product.

But I want to recognize the people who carried OpenBB to the very end. Through the uncertainty and the final stretch, they kept building. They are engineers, product builders, designers and operators who have worked across financial data, AI, developer infrastructure and open source. In alphabetical order, they are:

  • Andrew Kenreich, Head of Product Engineering - LinkedIn
  • Darren Lee, Software Engineer - GitHub, LinkedIn
  • Ihsan Saracgil, CPO - LinkedIn
  • José Donato, Software Engineer - LinkedIn, X, GitHub, Website
  • Juan Alfonso, Software Engineer - GitHub, LinkedIn
  • Minh Hoang, Head of Product - LinkedIn, GitHub
  • Ogonna Nnamani, DevOps - LinkedIn, Medium
  • Rita Figueiredo, Head of Marketing - LinkedIn, Website
  • Rita Soares, Head of Design - LinkedIn, Website
  • Theodore Aptekarev, CTO - LinkedIn, GitHub

To our customers: thank you for trusting a small team with such an ambitious vision.

To our partners: thank you for building alongside us and helping create a more open financial data ecosystem. I hope the next chapter gives you even more freedom to serve your users.

To our investors: thank you for believing in us, including when OpenBB was little more than an idea being built from my living room in London. In particular, I want to thank OSS Capital and Joseph Jacks for supporting this decision and enabling the technology to live beyond the company. Two people I want to name separately: Justin Hoffman and Larry Augustin - working with both of you made me a better founder, but more importantly, a better person.

To every contributor who opened a pull request, reported a bug, wrote documentation, answered a question in Discord, built an integration or simply told someone else about OpenBB: thank you. OpenBB would not have been possible without you.

Finally, to every person who spent part of their career building OpenBB: thank you. We pushed the industry forward and proved that world-class financial infrastructure can be built in the open. The commercial outcome doesn't change the quality of the work.

OpenBB didn't become the company I imagined when I started this journey. But the mission was always larger than the company, and I still believe the ideas behind it are right.

If, ten years from now, firms around the world are using OpenBB as the foundation for software they truly own - connecting their own data, building their own workflows and deploying their own AI agents - then what we built will have achieved something that lasts far beyond us; which was my goal all along: have an impact.

Thank you for one hell of a ride.

Didier Lopes
(LinkedIn, X, GitHub)