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.
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.
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.
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
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?”
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
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.
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
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.
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.
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.
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
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
- 0:32Natural language question enters Slack.
- 0:40Birdy extracts intent and parameters.
- 0:53Business Intelligence request routed to Metabase.
- 1:10Query results rendered into rich Slack response.
- 1:42Map request generates a static Mapbox image.
- 2:15Operational command sent to scooter.
- 2:45Permissions enforced using Slack identity.
- 3:20Unknown requests become future training data.
- 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.
- 01
Slack
Primary conversational interface for the hackathon
- 02
Birdy
Orchestration layer and skill runtime
- 03
Intent recognition
Wit.ai extracts intent, parameters, entities, and confidence
- 04
Skill router
Selects the reusable skill and enforces permissions
- 05
Business intelligence or operational services
Metabase queries, Bird APIs, maps, and live commands
- 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.
- 01
Conversation
- 02
Unknown utterance
- 03
Training queue
- 04
Intent association
- 05
Metabase query
- 06
Admin mapping
- 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.
- 01
Slack & channels
Slack first; terminal, mobile, SMS, and voice anticipated
- 02
Birdy orchestration
Skills, routing, permissions, and response rendering
- 03
Wit.ai
Trainable intent recognition and entity extraction
- 04
Metabase & data
Parameterized BI over production DBs, Presto, and ETL
- 05
Bird services & ops
Live vehicle commands, fleet state, and internal APIs
- 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