Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Projects

Projects organize work and enable team collaboration within General Bots. A project groups related tasks, conversations, documents, and team members into a shared workspace where everyone stays aligned.

General Bots

Overview

Every bot starts with a default project. Users can create additional projects to organize different initiatives, clients, or departments. When chatting with the bot, selecting a project scopes the conversation to that context—the AI understands what you’re working on and who else is involved.

Projects connect three core capabilities:

  • Tasks belong to projects, making it easy to track work across teams
  • Conversations can be project-scoped, so the AI has relevant context
  • Team members are assigned to projects, enabling collaboration

Creating Projects

Via Chat

User: Create a new project called Website Redesign
Bot: Project "Website Redesign" created. Would you like to add team members?
User: Yes, add maria@company.com and john@company.com
Bot: Added Maria and John to the project. You can now assign tasks and chat within this project context.

Via BASIC

' create-project.bas
PARAM name AS string
PARAM description AS string

DESCRIPTION "Create a new project workspace"

project_id = CREATE PROJECT name WITH DESCRIPTION description
TALK "Project created: " + name

' Add current user as owner
ADD USER TO PROJECT project_id, user.id, "owner"

Via API

POST /api/projects
{
  "name": "Website Redesign",
  "description": "Q2 website refresh initiative",
  "members": ["user-id-1", "user-id-2"]
}

Project Structure

Each project contains:

Project
├── Settings
│   ├── Name and description
│   ├── Visibility (private/team/public)
│   └── Default assignee
├── Members
│   ├── Owners (full control)
│   ├── Members (can edit)
│   └── Viewers (read only)
├── Tasks
│   ├── Boards and columns
│   ├── Task items
│   └── Dependencies
├── Conversations
│   ├── Project chat history
│   └── AI context from project docs
└── Files
    └── Project-specific documents

Working with Projects

Switching Project Context

In the chat interface, select a project from the project dropdown. All subsequent conversations use that project’s context:

[Project: Website Redesign ▼]

User: What tasks are due this week?
Bot: In the Website Redesign project, you have 3 tasks due this week:
     1. Finalize homepage mockups (Friday)
     2. Review navigation structure (Wednesday)
     3. Content inventory spreadsheet (Thursday)

Project-Scoped AI

When a project is selected, the AI automatically:

  • References project documents in responses
  • Knows about team members and their roles
  • Understands project-specific terminology from past conversations
  • Suggests relevant tasks and next steps
User: Who's working on the design?
Bot: Maria is assigned to the design tasks. She completed the color palette 
     yesterday and is currently working on the homepage mockups. John is 
     handling the technical implementation once designs are approved.

Team Collaboration

Project members can chat together with AI assistance:

Maria: @bot summarize what we discussed about the navigation
Bot: Based on your project conversations, the team decided on:
     - Simplified top nav with 5 main sections
     - Mega menu for product categories
     - Mobile-first hamburger menu
     John raised concerns about dropdown accessibility that still need addressing.

BASIC Keywords for Projects

CREATE PROJECT

project_id = CREATE PROJECT "Marketing Campaign" WITH DESCRIPTION "Q3 launch"

GET PROJECT

project = GET PROJECT project_id
TALK "Project: " + project.name
TALK "Members: " + LEN(project.members)
TALK "Open tasks: " + project.task_count

LIST PROJECTS

' List user's projects
projects = LIST PROJECTS
FOR EACH p IN projects
    TALK p.name + " (" + p.role + ")"
NEXT p

' List projects with filter
active = LIST PROJECTS WHERE "status = 'active'"

ADD USER TO PROJECT

ADD USER TO PROJECT project_id, user_id, "member"
ADD USER TO PROJECT project_id, email, "owner"

REMOVE USER FROM PROJECT

REMOVE USER FROM PROJECT project_id, user_id

SET PROJECT

Set the current conversation’s project context:

SET PROJECT project_id
' Subsequent operations use this project context
CREATE TASK "Review designs"  ' Task created in the selected project

DELETE PROJECT

DELETE PROJECT project_id
' Or via dynamic path
DELETE "/projects/" + project_id

API Reference

List Projects

GET /api/projects

Returns projects the authenticated user can access.

Get Project

GET /api/projects/{id}

Returns project details including members and task summary.

Create Project

POST /api/projects
{
  "name": "Project Name",
  "description": "Optional description",
  "visibility": "team",
  "members": [
    {"user_id": "...", "role": "owner"},
    {"user_id": "...", "role": "member"}
  ]
}

Update Project

PUT /api/projects/{id}
{
  "name": "Updated Name",
  "description": "Updated description"
}

Delete Project

DELETE /api/projects/{id}

Project Members

GET /api/projects/{id}/members
POST /api/projects/{id}/members
DELETE /api/projects/{id}/members/{user_id}

Project Tasks

GET /api/projects/{id}/tasks
POST /api/projects/{id}/tasks

Project Conversations

GET /api/projects/{id}/conversations

Database Schema

Projects are stored in the projects table:

ColumnTypeDescription
idUUIDProject identifier
bot_idUUIDOwning bot
nameTEXTProject name
descriptionTEXTOptional description
visibilityTEXTprivate, team, or public
settingsJSONBProject configuration
created_byUUIDCreator user ID
created_atTIMESTAMPCreation time
updated_atTIMESTAMPLast update

Project membership in project_members:

ColumnTypeDescription
project_idUUIDProject reference
user_idUUIDUser reference
roleTEXTowner, member, or viewer
joined_atTIMESTAMPWhen user joined

Default Project

Every bot has a default project that cannot be deleted. Tasks created without specifying a project go here. Users can:

  • Rename the default project
  • Move tasks from default to specific projects
  • Use the default for personal/unorganized work
' Get the default project
default = GET DEFAULT PROJECT
TALK "Default project: " + default.name

Project Templates

Create projects from templates for common scenarios:

' Create from template
project_id = CREATE PROJECT FROM TEMPLATE "client-onboarding", "Acme Corp Onboarding"

' Available templates
templates = LIST PROJECT TEMPLATES

Built-in templates include:

  • Client Onboarding - Tasks for new client setup
  • Product Launch - Launch checklist and milestones
  • Sprint - Two-week sprint with standard ceremonies
  • Content Calendar - Monthly content planning

Best Practices

Keep projects focused. A project should represent a distinct initiative with clear boundaries. If a project grows too large, consider splitting it.

Assign clear ownership. Every project needs at least one owner responsible for keeping it organized and moving forward.

Use project context in chat. When discussing project-specific topics, select the project first so the AI has full context.

Archive completed projects. Rather than deleting, archive finished projects to preserve history:

UPDATE PROJECT project_id SET status = "archived"

Review project membership regularly. Remove users who are no longer involved to keep conversations relevant.

Integration with Tasks

Tasks belong to exactly one project. The task view shows the default project by default, with options to filter by project or view all tasks across projects.

' Create task in specific project
SET PROJECT project_id
CREATE TASK "Design review" DUE DATEADD(NOW(), 7, "day")

' Or specify project directly
CREATE TASK "Design review" IN PROJECT project_id

See Also