← Work

Bird · 2020 Hackathon

Birdy AI — a conversational operating system before LLMs

A 2020 Bird hackathon project that became a conversational operating system for the company — skills, BI, maps, and live operational commands in Slack — years before ChatGPT, function calling, or AI agents existed.

Role: Hackathon team lead

  • 🏆 Bird Hackathon Winner
  • 🥇 First Place
  • 🛴 Entire team won free Bird scooters
  • 📅 Built in 3 days
  • 🏠 Built remotely during COVID
  • Conversational OS
  • AI agents before LLMs
  • Skills & orchestration

Origin

The story

One of my favorite projects at Bird started as a hackathon. The challenge wasn't simply to build something interesting — it was to rethink how thousands of employees could interact with the company's operational knowledge.

Every day, Operations, Fleet Managers, Executives, Support, Repair teams, and Product teams spent countless hours switching between dashboards, SQL queries, maps, spreadsheets, internal tools, and APIs just to answer simple business questions.

Our idea was deceptively simple: what if you could simply ask the company a question? Today that sounds obvious. In 2020, before ChatGPT, Claude, function calling, or AI agents existed, it was anything but obvious.

Over the course of three days, during Bird's fully remote COVID hackathon, I led a team of engineers to build Birdy — a conversational AI assistant capable of answering business questions, visualizing operational data, locating vehicles, generating maps, and executing live operational commands entirely through Slack.

The project won first place in Bird's internal hackathon and every member of the team received a free Bird scooter. Looking back today, Birdy feels remarkably similar to what we now call an AI agent. The only thing missing was the Large Language Model.

Collaboration

People I built this with

The people behind this chapter—and the part each of them played in shaping the work.

Justin Balthrop

CTO & Co-Founder, Triangle Health · Former CTO, Bird and Geni

Birdy was built during one of Bird's internal hackathons while Justin was CTO. The project reflected the culture of experimentation and internal tooling that existed across the engineering organization.

Vladislav Kopman

Software Engineer at Bird · Full-stack product engineer

Vlad was part of the team behind Birdy during Bird's 2020 remote hackathon. His deep familiarity with Bird's backend and operational systems helped the conversational platform reach across the many tools and capabilities employees needed.

Michael Batchelor

Staff Software Engineer at Airbnb · Former VP of Engineering, Bird

Michael was part of the Birdy hackathon team that built a conversational operating layer for Bird. His systems perspective helped connect an ambitious three-day prototype to the practical realities of the company's production platform.

Journey

A conversational operating system for Bird

01

The problem wasn't missing data

Business intelligence wasn't difficult because the data didn't exist. It was difficult because the information lived everywhere.

Employees constantly jumped between BI dashboards, SQL queries, maps, fleet management systems, operations consoles, support tools, internal APIs, and cloud services. Finding an answer often required knowing which system contained the information, who had access, how to query it, and how to interpret the results.

Our goal wasn't simply to build another dashboard. It was to democratize access to information by allowing anyone to ask questions in natural language and receive immediate answers.

What if you could simply ask the company a question?
02

Beyond business intelligence

As Birdy evolved during the hackathon, we realized we weren't building a BI assistant. We were building a conversational operating system for Bird.

Different users needed different capabilities. Executives wanted global business metrics. Fleet Managers wanted fleet health and revenue. Operations teams needed vehicle information. Support teams wanted customer context. Repair technicians needed maintenance history. Supply Chain wanted inventory information.

Rather than building separate interfaces for each department, Birdy unified everything behind a single conversational experience.

  • Executives — global business metrics
  • Fleet Managers — fleet health and revenue
  • Operations — vehicle information
  • Support — customer context
  • Repair — maintenance history
  • Supply Chain — inventory information
03

A modern agent architecture before AI agents

Looking back today, Birdy's architecture feels surprisingly modern. If I rebuilt it today, I would likely replace Wit.ai with GPT-5 and use MCP for tool integration. Almost everything else would remain remarkably similar.

The architecture separated language understanding from business execution. Birdy wasn't responsible for answering questions itself. It was responsible for understanding what the user wanted and routing the request to the appropriate system.

04

Skills instead of hardcoded features

One of the most important design decisions was building Birdy around Skills rather than hardcoded commands.

Each capability was represented as a reusable skill describing intent, parameters, entities, permissions, and execution logic.

Today we'd probably call these tools, functions, or MCP servers. Back then we simply called them Skills.

  • Intent
  • Parameters
  • Entities
  • Permissions
  • Execution logic
05

Teaching Birdy without writing code

Perhaps my favorite part of the project was that Birdy could continuously evolve without requiring engineering work.

When users asked questions that Birdy couldn't answer, those requests were collected for training. An administrator could then create a new intent, define parameters, add training utterances, associate the intent with a business query, and publish the new skill.

No application deployment. No code changes. No engineering release. A completely new capability could become available within minutes. The platform became smarter simply by observing what employees were asking.

06

Business intelligence as a platform

Birdy integrated with Metabase to execute parameterized business intelligence queries. Rather than embedding SQL inside the application, each business question was mapped to a configurable query.

Questions like "How many scooters were deployed today?", "Which habitats have the most configurations?", or "Show me the top markets this week" could all be configured without modifying application code.

Administrators simply associated conversational intents with Metabase questions and parameter mappings.

  • How many scooters were deployed today?
  • Which habitats have the most configurations?
  • Show me the top markets this week.
07

Rich responses

Birdy wasn't limited to plain text. Responses could include formatted tables, summary statistics, charts, generated maps, operational details, images, and Slack Block Kit layouts.

If a question involved geography, Birdy automatically generated static maps with markers using Mapbox.

The goal wasn't simply to answer questions. It was to present information in the most useful form for the user.

08

More than Slack

Although Slack was the primary interface for the hackathon, Birdy was intentionally designed as a platform rather than a Slack bot.

Our architecture already anticipated additional interfaces including Terminal, Mobile Applications, SMS, Alexa, Google Assistant, and Siri.

All of those channels communicated with the same orchestration layer and reused the same skills and integrations.

  • Slack
  • Terminal
  • Mobile applications
  • SMS
  • Alexa
  • Google Assistant
  • Siri
09

Looking back

Watching our original hackathon presentation today is surreal. We built Birdy remotely during COVID in just three days.

At the time, we described it as an Artificial Intelligence assistant powered by Natural Language Processing. Today, looking through the lens of modern AI, it's remarkable how many concepts already existed: conversational interfaces, skills, intent routing, tool orchestration, business intelligence integration, operational actions, permission-aware execution, configurable workflows, and continuous learning.

The language model was the only missing piece. Everything else already looked remarkably similar to the AI agent architectures that have become mainstream several years later.

The language model was the only missing piece.

Demo

Watch the Original Demo

This presentation was recorded during Bird's fully remote COVID hackathon in 2020.

Watching it today is surreal. At the time we described Birdy as an AI assistant powered by natural language processing. Through the lens of modern AI, it already looks like an agent architecture — skills, routing, tools, permissions, and continuous learning — with the language model as the only missing piece.

Demo Walkthrough

  1. 0:32Natural language question enters Slack.
  2. 0:40Birdy extracts intent and parameters.
  3. 0:53Business Intelligence request routed to Metabase.
  4. 1:10Query results rendered into rich Slack response.
  5. 1:42Map request generates a static Mapbox image.
  6. 2:15Operational command sent to scooter.
  7. 2:45Permissions enforced using Slack identity.
  8. 3:20Unknown requests become future training data.
  9. 4:10New capabilities can be added without writing code.

Looking back, Birdy feels less like a chatbot and more like a prototype of the AI agent architectures that became mainstream several years later. We didn’t have large language models yet, so we built everything around trainable intent classification, skills, routing, and orchestration. If I were building it today, I would replace Wit.ai with GPT-5 and MCP tools—but surprisingly little else about the overall architecture would change.

Context

The problem and my role

Problem

Business intelligence wasn't difficult because the data didn't exist — it was difficult because the information lived everywhere. Operations, Fleet, Executives, Support, Repair, and Product teams spent countless hours switching between dashboards, SQL, maps, spreadsheets, internal tools, and APIs just to answer simple questions.

Role

Led the engineering team behind Birdy during Bird's fully remote COVID hackathon. Designed much of the overall architecture — Kotlin orchestration, the conversational skill framework, intent routing, Metabase and Mapbox integrations, training/admin tools, Slack and terminal interfaces, rich response rendering, and permission-aware execution.

Constraints

  • Three-day hackathon with a fully remote team during COVID in 2020
  • No LLMs, ChatGPT, Claude, function calling, or modern AI agents yet
  • Information lived across BI dashboards, SQL, maps, fleet systems, ops consoles, support tools, and APIs
  • Different departments needed different capabilities behind one conversational experience
  • New skills had to be teachable without code changes or engineering releases
  • Operational actions and BI queries needed permission-aware execution

System

Architecture

System map

Language understanding separated from execution

Birdy wasn't responsible for answering questions itself. It understood what the user wanted and routed the request to the appropriate system — the same spine we'd rebuild today with GPT-5 and MCP.

  1. 01

    Slack

    Primary conversational interface for the hackathon

  2. 02

    Birdy

    Orchestration layer and skill runtime

  3. 03

    Intent recognition

    Wit.ai extracts intent, parameters, entities, and confidence

  4. 04

    Skill router

    Selects the reusable skill and enforces permissions

  5. 05

    Business intelligence or operational services

    Metabase queries, Bird APIs, maps, and live commands

  6. 06

    Rich response

    Tables, charts, maps, images, and Block Kit layouts

System map

From unknown question to production skill

Unanswered requests weren't discarded — they became the training loop that let Birdy grow without code changes or redeployments.

  1. 01

    Conversation

  2. 02

    Unknown utterance

  3. 03

    Training queue

  4. 04

    Intent association

  5. 05

    Metabase query

  6. 06

    Admin mapping

  7. 07

    Production

System map

Orchestration across Bird's ecosystem

Rather than becoming another application, Birdy sat at the center of a growing ecosystem and connected the pieces together.

  1. 01

    Slack & channels

    Slack first; terminal, mobile, SMS, and voice anticipated

  2. 02

    Birdy orchestration

    Skills, routing, permissions, and response rendering

  3. 03

    Wit.ai

    Trainable intent recognition and entity extraction

  4. 04

    Metabase & data

    Parameterized BI over production DBs, Presto, and ETL

  5. 05

    Bird services & ops

    Live vehicle commands, fleet state, and internal APIs

  6. 06

    Maps & external APIs

    Mapbox, Google APIs, weather, AWS, and other services

Execution

What I built

  • Designed Birdy as a conversational operating system — an orchestration layer over company knowledge and operational systems, not a single-purpose chatbot.
  • Built a Kotlin / Dropwizard skill framework with intent recognition, parameter extraction, permissions, and routed execution.
  • Separated language understanding from business execution so Birdy routed work to Metabase, Bird services, maps, and other tools.
  • Integrated Metabase as a configurable BI platform so questions mapped to parameterized queries without embedding SQL in the app.
  • Returned rich responses — tables, charts, Mapbox maps, images, and Slack Block Kit layouts — matched to the question.
  • Built training and administration tools so non-engineers could publish new skills without deployments.
  • Designed channel-agnostic orchestration anticipating Slack, terminal, mobile, SMS, and voice assistants.
  • Led overall architecture, Slack/terminal integrations, Mapbox rendering, security/permissions, and system integration across Bird's ecosystem.

Tradeoffs

Technical decisions

A conversational OS, not a chatbot

Decision
Treat Birdy as an orchestration layer that unifies departmental needs behind one conversational experience.
Why
Executives, fleet, ops, support, repair, and supply chain all needed different capabilities — separate dashboards would recreate the fragmentation we were trying to remove.
Tradeoff
Platform breadth increases integration surface area, but one skill runtime scales across teams and channels.

Skills instead of hardcoded features

Decision
Model every capability as a reusable skill with intent, parameters, entities, permissions, and execution logic.
Why
Skills made Birdy extensible the way modern tools, functions, and MCP servers do — without baking every question into application code.
Tradeoff
Skill design and training quality become product work; ambiguous utterances need a review loop before going company-wide.

Separate understanding from execution

Decision
Use intent recognition to decide what the user wants, then route to Metabase, Bird services, maps, or other systems to do the work.
Why
Birdy shouldn't invent answers. It should connect language to the systems of record that already know how to execute.
Tradeoff
Routing correctness and permission checks become critical path, but the architecture stays replaceable when better language models arrive.

Teach new capabilities without deploys

Decision
Collect unknown utterances and let administrators publish new skills through training and Metabase mappings.
Why
Without LLMs, continuous NLU training was the only way for the platform to grow at the speed of employee questions.
Tradeoff
Coverage depends on admin attention and training phrases, but new capabilities can ship in minutes instead of release cycles.

Platform channels, Slack-first delivery

Decision
Ship Slack for the hackathon while designing orchestration to support terminal, mobile, SMS, and voice assistants on the same skills.
Why
A Slack bot would have been a demo. A channel-agnostic skill runtime could become company infrastructure.
Tradeoff
Extra abstraction during a three-day build, but it kept Birdy from being trapped inside one client.

Value

Product impact

User impact

Anyone at Bird could ask the company a question in natural language and get BI answers, maps, charts, vehicle context, or operational actions without hunting across systems.

Business impact

Turned fragmented operational knowledge into a teachable conversational platform — one orchestration layer, reusable skills, and admin-driven expansion without engineering releases.

Results

Outcomes

  • Won first place in Bird's internal hackathon; every team member received a free Bird scooter.
  • Unified executives, fleet, operations, support, repair, and supply-chain needs behind one conversational experience.
  • Made new company capabilities teachable in minutes through skills, training utterances, and Metabase mappings — without engineering releases.
  • Prototyped the shape of modern AI agents years early: skills/tools, routing, orchestration, permissions, and continuous learning — missing only the LLM.

Notes

Notes from the system

Not a chatbot — an operating system

Birdy unified executives, fleet, operations, support, repair, and supply chain behind one conversational experience. The insight wasn't NLP. It was orchestration.

Skills before MCP

Each capability was a skill with intent, parameters, permissions, and execution logic. Today we'd call them tools or MCP servers. The architecture already pointed there.

Reflection

Lessons learned

  • The durable part of an AI assistant is the conversational operating system: skills, routing, permissions, and systems of record — language models mainly upgrade the understanding layer.
  • When new capabilities can be published through training and configuration instead of deploys, the product compounds with every unanswered question.

Tools

Stack

KotlinDropwizardSlack APISlack Block KitWit.aiMetabaseRedisMapboxQuickChartGoogle APIsAWSHTML renderingBusiness intelligenceIntent classificationEntity extractionNLPDistributed systemsAPI orchestrationEvent routingAI training platform