DOBY 🤖

"Looking for master."

Your Personal AI Agent Platform
Create intelligent agents that work while you don't — using just plain English.

ProblemSolutionWhy ServerpodGetting StartedArchitecture


🎯 The Problem

We're Drowning in Digital Chaos

The modern knowledge worker is overwhelmed:

The Pain The Numbers
📧 Email Overload 121 emails/day average, 28% of workweek spent in inbox
📅 Meeting Fatigue 25+ meetings/week with zero prep time
🔔 Notification Hell 96 phone checks/day, constant interruptions
🔄 Context Switching 23 minutes to refocus after each distraction
Repetitive Tasks 2+ hours/day on tasks that could be automated

Current Solutions Fail

Email Filters? Too rigid. Important emails slip through or get buried.

Calendar Apps? They tell you WHAT's coming, not HOW to prepare.

Task Managers? You still do all the work manually.

Zapier/IFTTT? Requires technical setup. Limited to simple "if this then that."

Siri/Alexa? Good for timers and weather. Useless for real work automation.

The Real Problem

"I just want to say: 'When my boss emails me, tell me immediately and draft a reply.' Why does that require a computer science degree?"

There's no tool that lets normal people create intelligent, personalized automation using natural language.

Until now.


💡 The Solution

Meet DOBY

DOBY is your personal AI agent platform. Create intelligent automation by simply describing what you want.

"When I get an email from my boss, notify me immediately and draft a professional response"

↓ DOBY understands and creates an agent ↓

✅ Agent Created: "Boss Email Alert"
   Trigger: Email received from boss@company.com
   Actions: 
     1. Send push notification
     2. Draft response using AI
     3. Add to high-priority tasks

Key Features

Feature Description
🗣️ Natural Language Describe what you want in plain English
🤖 Personal Agents Build an army of AI workers (we call them "Dobies")
Real-time Execution Watch your agents work with live progress
💬 Chat Interface Talk to DOBY like a colleague
📊 Activity Dashboard See everything your agents accomplish
🔗 Integrations Gmail, Calendar, Notion, Slack (coming soon)

Example Agents You Can Create

"Every morning at 7am, summarize my calendar and unread emails"
→ ☀️ Morning Briefing agent

"Before any meeting, prepare a briefing with attendee LinkedIn profiles"  
→ 📅 Meeting Prep agent

"When my spending exceeds $500 in a day, alert me"
→ 💰 Budget Watcher agent

"When someone mentions 'urgent' in Slack, notify me immediately"
→ 🚨 Urgent Alert agent

🏗️ Why Serverpod?

We built DOBY's backend with Serverpod — and here's why it was the perfect choice:

What is Serverpod?

Serverpod is an open-source, next-generation backend framework built specifically for Flutter. It's written entirely in Dart, which means:

One Language. Everywhere.

// Same Dart code on server...
class Agent {
  String name;
  String triggerType;
  bool isActive;
}

// ...and on Flutter client
final agent = await client.doby.createAgent(name: "Email Bot");
print(agent.name); // Full type safety!

Serverpod vs The Competition

Feature Serverpod Firebase Supabase Node.js
Same language as Flutter ✅ Dart ❌ JS ❌ JS ❌ JS
End-to-end type safety
Auto-generated API client ⚠️
Self-hostable
No vendor lock-in ⚠️
Built-in ORM
WebSocket support ⚠️
Learning curve for Flutter devs Low Medium Medium High

How Serverpod Powers DOBY

1. Define Once, Use Everywhere

# doby_server/lib/src/doby/agent.spy.yaml
class: Agent
table: agents
fields:
  userId: int
  name: String
  description: String
  triggerType: String
  isActive: bool
  runCount: int

Run serverpod generate and you get:

  • ✅ Dart model class
  • ✅ Database table migration
  • ✅ Serialization/deserialization
  • ✅ Client-side model (same class!)

2. Type-Safe Database Queries

// Find all active agents for a user
final agents = await Agent.db.find(
  session,
  where: (t) => t.userId.equals(userId) & t.isActive.equals(true),
  orderBy: (t) => t.createdAt,
  orderDescending: true,
);
// Full autocomplete, compile-time checks!

3. Seamless Client Integration

// In Flutter - calling server is this simple
final agent = await client.doby.createAgentFromNaturalLanguage(
  "When I get an email from my boss, notify me"
);

// agent is fully typed - no JSON parsing!
print(agent.name);        // "Boss Email Alert"
print(agent.triggerType); // "email"

4. Real-time Updates

// Server pushes execution progress to client
await session.messages.postMessage(
  'agent-execution-$agentId',
  ExecutionUpdate(step: 2, message: 'Drafting response...'),
);

5. Built-in Scheduling

// Schedule agent to run every morning at 7am
await session.serverpod.futureCallAtTime(
  'morningBriefing',
  DateTime.now().add(Duration(hours: calculateTimeUntil7am())),
  userId,
);

The Bottom Line

With Serverpod, we built a complete backend in days, not weeks. No API contract mismatches. No serialization bugs. No "works on my machine." Just Dart, everywhere.


🚀 Getting Started

Prerequisites

# Install Flutter
# https://flutter.dev/docs/get-started/install

# Install Serverpod CLI
dart pub global activate serverpod_cli

# Install Docker
# https://docs.docker.com/get-docker/

Quick Start

Terminal 1 - Start Database & Server:

cd doby/doby_server
docker compose up -d          # Start PostgreSQL + Redis
dart bin/main.dart --apply-migrations  # First time only
dart bin/main.dart            # Start server

Terminal 2 - Start Flutter App:

cd doby/doby_flutter
flutter pub get
flutter run -d chrome

Verify It Works

  1. Server running: Open http://localhost:8080 → Should see "OK"
  2. App running: Chrome opens with DOBY dashboard
  3. Create an agent: Try "When I get an email from my boss, notify me"

🏛️ Architecture

┌─────────────────────────────────────────────────────────────┐
│                      DOBY SYSTEM                            │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   ┌───────────────────┐       ┌───────────────────────┐    │
│   │   FLUTTER APP     │       │   SERVERPOD SERVER    │    │
│   │                   │       │                       │    │
│   │  ┌─────────────┐  │ HTTP  │  ┌─────────────────┐  │    │
│   │  │ Dashboard   │  │◄─────►│  │ DobyEndpoint    │  │    │
│   │  │ Agent List  │  │       │  │                 │  │    │
│   │  │ Chat Screen │  │       │  │ • createAgent() │  │    │
│   │  │ Settings    │  │       │  │ • executeAgent()│  │    │
│   │  └─────────────┘  │       │  │ • sendChat()    │  │    │
│   │                   │       │  └─────────────────┘  │    │
│   │  ┌─────────────┐  │       │           │          │    │
│   │  │ Doby Theme  │  │       │           ▼          │    │
│   │  │ (Cyberpunk) │  │       │  ┌─────────────────┐  │    │
│   │  └─────────────┘  │       │  │   PostgreSQL    │  │    │
│   │                   │       │  │                 │  │    │
│   │  ┌─────────────┐  │       │  │ • agents        │  │    │
│   │  │ Doby Mascot │  │       │  │ • executions    │  │    │
│   │  │ (Animated)  │  │       │  │ • chat_messages │  │    │
│   │  └─────────────┘  │       │  │ • activity_logs │  │    │
│   │                   │       │  └─────────────────┘  │    │
│   └───────────────────┘       └───────────────────────┘    │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Data Models

Model Purpose
Agent AI agent configuration (trigger, actions, status)
AgentAction Individual steps an agent performs
TaskExecution Execution history with status/progress
ActivityLog User-facing activity feed
ChatMessage Conversation history with DOBY
UserIntegration OAuth tokens for Gmail, Calendar, etc.

Project Structure

doby/
├── doby_server/          # Serverpod backend
│   ├── lib/src/doby/     # Models (.spy.yaml) & Endpoints
│   ├── docker-compose.yaml
│   └── config/
│
├── doby_client/          # Generated API client
│   └── lib/src/protocol/ # Auto-generated from server
│
├── doby_flutter/         # Flutter app
│   ├── lib/
│   │   ├── core/theme/   # Cyberpunk dark theme
│   │   ├── features/     # Screens (dashboard, chat, etc.)
│   │   └── shared/       # Widgets (mascot, nav, etc.)
│   └── pubspec.yaml
│

Built With

Share this project:

Updates