Workspace App Overview
AI-native project collaboration. Each workspace bundles a message board, grouped to-do lists, a schedule, files, recurring check-ins, and a Hill Chart on a single scrollable canvas — with an AI teammate that moves the work along.
What is the Workspace App?
The Workspace App is the project-collaboration surface for MangoApps Workforce. A workspace is a project container — calm, Basecamp-style — that holds everything a team needs in one place: posts and comments, grouped to-dos, a schedule, files, recurring check-ins, a Hill Chart, pinned items, linked tools, and an embedded client portal. The Workspace Agent works alongside you: it drafts each member’s check-in response, proposes Hill Chart positions from real activity, and generates a weekly client digest with internal-only items redacted automatically. Every AI write requires user approval before it persists.
Core Value Proposition:
- 🎯 One Calm Canvas — Posts, to-dos, schedule, files, check-ins, and Hill Chart on one scrollable page per project
- 🤖 AI Teammate, Not Auto-Pilot — AI drafts check-ins and proposes Hill Chart positions; you approve before anything posts
- 🤝 Client-Safe Sharing — Invite external collaborators with magic-link access and a redacted weekly digest
- 📊 Activity That Tells a Story — Lineup timeline, cross-workspace search, weekly recaps, AI adoption analytics
At a Glance
| 📊 Active Users | ⏱️ Setup Time | 🔗 Integrations | 📱 Mobile Ready |
|---|---|---|---|
| [X]+ companies | Minutes (templates) | 5+ apps | ✅ Yes (API v1) |
Perfect For:
- 🏢 Project teams running multiple parallel initiatives — each gets its own canvas with no app-hopping
- 👥 Client services / agencies needing a clean, redacted view to share with external stakeholders
- 📈 Operating leaders who want progress signals (Hill Charts, weekly recaps, lineup) without status meetings
How It Works
The Workspace Canvas
┌──────────────────────────────────────────────────────────────────────────────┐
│ WORKSPACE CANVAS (single page) │
├──────────────────────────────────────────────────────────────────────────────┤
│ │
│ LEFT COLUMN RIGHT COLUMN │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 📌 PINNED │ │ ⛰️ HILL CHART │ │
│ ├──────────────────┤ ├──────────────────┤ │
│ │ 💬 MESSAGES │ │ ✅ TASKS │ │
│ ├──────────────────┤ ├──────────────────┤ │
│ │ 📁 FILES │ │ 🔁 CHECK-INS │ │
│ │ (Drive-backed) │ ├──────────────────┤ │
│ │ │ │ 📅 SCHEDULE │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 🔗 LINKED TOOLS │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 📚 WIKIS │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 📋 LIBRARY │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 📝 FORMS │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 👥 MEMBERS │ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 🔑 CLIENT ACCESS│ │
│ │ │ ├──────────────────┤ │
│ │ │ │ 📈 ACTIVITY │ │
│ └──────────────────┘ └──────────────────┘ │
│ │
│ Owners can drag sections between columns and disable any section per │
│ workspace via the Features modal. │
└──────────────────────────────────────────────────────────────────────────────┘
Integration Ecosystem
┌─────────────────┐
│ WORKSPACE │
│ APP │
└────────┬────────┘
│
┌─────────────┬───────────────┼───────────────┬─────────────┐
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ DRIVE │ │ TASKS │ │ FORMS │ │ LIBRARIES │ │ ASK AI │
│ │ │ (unified) │ │ │ │ │ │ (Agent) │
└─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘ └─────┬─────┘
│ │ │ │ │
▼ ▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ Per-ws │ │ Workspace │ │ Embed │ │ Attach │ │ Workspace │
│ Shared │ │ tasks = │ │ forms in │ │ library │ │ Agent via │
│ Drive │ │ Tasks app │ │ a section │ │ items │ │ chat │
│ auto-prov │ │ (kanban) │ │ │ │ │ │ │
└───────────┘ └───────────┘ └───────────┘ └───────────┘ └───────────┘
Key Features
💬 Message Board
The team’s posting surface — long-form posts with comments, mentions, and reactions.
| Feature | Description |
|---|---|
| Posts with Comments | Threaded discussion on each message |
| @Mentions | Mention members in posts and comments; mentioned users get a dedicated email category |
| Emoji Reactions | Polymorphic reactions on messages, comments, and tasks |
| Polls | Attach a poll to any message and let members vote |
| Internal-Only Flag | Mark posts as internal so they’re hidden from client digests |
| Read Receipts | Per-user “mark as read” tracking |
| AI Summary | Summarize a long thread on demand from the message view |
| Convert to Task | Turn any message or comment into a workspace task in one click |
Use Case: A team posts a long status update with several open questions in the comments. Anyone joining mid-week clicks “Summarize” and gets a one-paragraph recap; a manager turns the most urgent comment into an assigned task without leaving the page.
💡 Pro Tip: Mark client-sensitive posts as internal-only at write-time — the weekly client digest automatically redacts them, so you never have to scrub sections before sharing.
✅ Tasks & Task Lists
Workspace to-dos are unified with the platform Tasks app — same model, scoped to the workspace.
| Feature | Description |
|---|---|
| Grouped Task Lists | Organize work into named lists with descriptions |
| Assignees & Due Dates | Assign to any member; due date drives “overdue” filters |
| Complete / Reopen | One-click status toggle |
| Kanban View | Drag tasks between columns at the workspace level |
| Task Comments | Discussion thread on each task (per-workspace toggle) |
| Recurring Tasks | Repeat-on-schedule support (per-workspace toggle) |
| Convert from Message | Promote a message or comment into a task |
| Email on Assignment | Assignee gets a notification with task title + workspace |
⛰️ Hill Chart
The signature progress visualization — every scope is a dot on a hill (uphill = figuring out, downhill = executing).
| Feature | Description |
|---|---|
| Per-Scope Dots | One dot per scope label, positioned 0–100 along the hill |
| AI Position Proposals | Workspace Agent proposes new positions from completed tasks + recent activity |
| Accept / Dismiss | Owner accepts or dismisses each AI proposal — position never auto-changes |
| Position History | Movement persists for the lineup view to chart progress |
Use Case: Friday afternoon, the agent looks at completed to-dos and proposes “Onboarding Flow” should move from 35 → 60 (over the hill). The owner accepts; the dot moves and the lineup view updates.
🔁 Recurring Check-Ins (with AI Drafts)
Daily, weekly, or monthly questions that go out to the workspace — and the agent drafts each member’s response.
┌──────────────────────────────────────────────────────────────────────┐
│ AI-DRAFTED CHECK-IN FLOW │
├──────────────────────────────────────────────────────────────────────┤
│ │
│ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐│
│ │ NEXT_RUN_AT│───▶│ AGENT READS│───▶│ DRAFT SAVED│───▶│ USER ││
│ │ ELAPSED │ │ MEMBER'S │ │ ai_drafted │ │ APPROVES ││
│ │ │ │ ACTIVITY │ │ = true │ │ + EDITS ││
│ └────────────┘ └────────────┘ └─────┬──────┘ └────┬─────┘│
│ │ │ │
│ email │ ▼ │
│ "draft ready" ──┘ ┌──────────┐ │
│ │ RESPONSE │ │
│ │ POSTED │ │
│ └──────────┘ │
│ │
│ If auto_draft is OFF, members get a "check-in due" email instead. │
└──────────────────────────────────────────────────────────────────────┘
| Feature | Description |
|---|---|
| Cadence | Daily, weekly, or monthly |
| Days of Week & Time-of-Day | Schedule precisely when the next run fires |
| Auto-Draft (per check-in) | Agent drafts the response from the member’s recent activity |
| Approval-Gated | Drafts never post until the user reviews and approves (with optional edits) |
| Pause / Resume | Pause a check-in without deleting it |
| AI Audit Event | Approving an AI draft emits an AppEvent for the audit trail |
Use Case: Weekly check-in asks “What did you ship this week?” The agent drafts each member’s response from completed tasks + posted messages; members get an email, click “Review,” edit if needed, and approve.
🔑 Workspace Client Portal
Invite external collaborators (your client, an outside vendor) without giving them a full platform account.
| Feature | Description |
|---|---|
| Magic-Link Invite | Send a passwordless link via email — no account creation needed |
| Tokenized Access | Each invite is a PasswordlessToken with workspace-scoped metadata |
| Read-Only Surface | Clients see the workspace through a separate WorkspaceClientPortal controller |
| Audit Trail | Inviter and invitee captured on the token |
📰 Client Digest & Weekly Recap
Two digests, same building blocks — one for clients, one for the team.
| Digest | Audience | What’s Included |
|---|---|---|
| Client Digest | External (audience: :external) |
Completed tasks, open milestones, upcoming events, public message highlights, hill chart positions. Internal-only items removed automatically. |
| Weekly Recap | Internal (audience: :internal) |
Same sections plus internal-only messages. Posted as a workspace message + emailed to all members. |
| Daily Activity Digest | Per user, last 24 hours | Aggregates events across the user’s workspaces; emailed once per day if there’s activity |
Use Case: Friday at noon, an owner clicks “Generate client digest” and gets a Markdown summary they can drop straight into an email — internal-only posts and comments are gone, no manual cleanup.
⚡ Quick Add (Omnibox)
A single text input that creates a task, message, link, or event based on a prefix.
| Prefix | Creates | Example |
|---|---|---|
task: … or /task … |
Task on the workspace | task: Ship onboarding flow @sam by Friday |
msg: … or /msg … |
Message on the board | msg: Demo notes -- key takeaways below |
link: … or /link … |
Linked Tool | link: https://figma.com/file/... Mockups |
event: … or /event … |
Schedule event | event: Client review at 2026-05-02 3pm |
| (no prefix) | Short message | Treated as a title-only post |
💡 Pro Tip: The omnibox intentionally doesn’t trigger on plain
task foo(no colon, no slash) — so you can write naturally about tasks and links without accidentally creating one.
🎨 Customizable Canvas
Owners arrange the workspace to fit how their team works.
| Feature | Description |
|---|---|
| Drag-to-Reorder Sections | Move any of 14 sections (pinned, messages, files, hill chart, tasks, check-ins, schedule, linked tools, wikis, library, forms, members, client access, activity) between left/right columns |
| Per-Workspace Disable | Owner hides sections they don’t use; business-level admin can disable globally |
| Per-Workspace Feature Flags | Override enable_task_comments, enable_recurring_tasks, enable_kanban per project |
| Cover Image | Optional cover with Vips-processed variants pre-warmed in the background |
| Icon & Color | Pick from icon set + brand color for cards and headers |
| Reset Layout | One-click revert to the default order |
📅 Schedule
Per-workspace events with iCal export.
| Feature | Description |
|---|---|
| Workspace Events | Title, start/end, description per event |
| iCal Feed | events#feed returns text/calendar so members subscribe in any calendar app |
| Upcoming View | Surface in the workspace canvas (limit 10 next events) |
🔗 Linked Tools (Doors)
Pin external URLs (Figma, GitHub, Notion, Slack channels) directly on the workspace canvas so they’re one click away.
📌 Pinned Items
Polymorphic pins on messages, tasks, links, or files — ordered, owner-managed, surface at the top of the canvas.
📚 Library, Wikis & Forms Sections
Each workspace optionally hosts:
| Section | Source App | Behavior |
|---|---|---|
| Wikis | Wikis app | Wiki pages scoped to this workspace |
| Library | Libraries app | Library items linked to this workspace (deletes nullify, not destroy) |
| Forms | Forms app | Embed forms via WorkspaceFormEmbed |
📁 Files (Drive-Backed)
Every workspace gets a Shared Drive auto-provisioned on create. The files section reads directly from workspace.drive, so all the Drive features (versioning, search, permissions) come for free.
🤖 Workspace Agent (AI Teammate)
The AI teammate for project collaboration. Tools defined in Agents::ToolRegistry::Workspace.
Capabilities (verified in the agent’s metadata):
- List your workspaces and dive into a specific one
- Search and summarize message-board threads
- Draft your recurring check-in response from recent activity (you approve before it posts)
- Propose Hill Chart dot positions based on completed to-dos and recent activity
- Generate a weekly client-facing digest with internal-only items redacted
- Suggest a follow-up to-do from a message thread
- Create workspaces, add members, post messages, add to-dos, and create check-ins (every write goes through a confirmation prompt)
Architecture: Built on LlmConnectionManager + Agents::Concerns::AgenticTools; uses AiModelTier.model_for(:standard, provider: :anthropic) (Claude). Tools call canonical services in app/services/workspaces/ — never raw ActiveRecord — so the agent and the UI take the same code paths.
🌟 What’s New
A one-click AI recap of recent activity tailored to the current user — surfaces what changed since the last visit. Returns JSON for in-place rendering.
🗂️ Templates
Spin up new workspaces from pre-built or saved structures.
| Source | Description |
|---|---|
| Starter Templates | System templates seeded for common project types |
| Save from Workspace | Capture an existing workspace’s task lists, hill charts, and check-ins as a reusable template |
| One-Click Use | Pick a template, name the new workspace, click “Create from template” |
| Duplicate Workspace | Owner clones an existing workspace with content (separate from templates) |
📈 Lineup (Cross-Workspace Timeline)
A horizontal timeline of all your active workspaces — shows creation date through last activity, with completed/open task counts and average Hill Chart progress on each row.
🔍 Cross-Workspace Search (Cmd-K)
Single search palette across every workspace you’re a member of — HTML page + JSON for the keyboard-driven palette.
💾 Saved Filters
Per-user named filters on the workspaces index. Filter by status (active/archived), role (owner), overdue tasks, awaiting check-in, or text search — save the combination as a named filter for one-click recall.
📊 Analytics & Reports
| Surface | What It Shows |
|---|---|
| Analytics Dashboard | Total / active / new workspaces, messages posted, tasks completed/open over a configurable window (7/30/90/180/365 days) |
| AI Adoption Card | Check-in responses, AI-drafted vs. user-approved counts, hill chart agent updates, AI-draft approval rate |
| Top Workspaces | Ranked by activity (messages + tasks + members) |
| CSV Export | Export analytics for any time window |
| Reports | Manager / admin reporting surface (reports#index) |
👥 Membership Models
Two ways to belong to a workspace — explicit and rule-based.
| Type | How It Works |
|---|---|
| Explicit Member | A WorkspaceMembership row with role: owner, member, or viewer |
| Rule-Based Member | Workspace links to a NotificationRecipientGroup; anyone in the group has access. An explicit row is created lazily on first interaction so per-user state has somewhere to hang. |
| Auto-Added Flag | Lazy-created rows are flagged auto_added: true for audit |
This means a workspace tied to “All Engineering” rule auto-includes new engineers without manual member management — and digests fan out to both explicit and rule-resolved members.
🔔 Notifications
Per-action email categories — opt out granularly without silencing the whole app.
| Notification | Category | Triggered When |
|---|---|---|
| New Message | workspace_message |
Someone posts on the board |
| New Comment | workspace_message |
Someone comments on a message |
| Message Mention | workspace_message_mention |
You’re @-mentioned in a message |
| Comment Mention | workspace_comment_mention |
You’re @-mentioned in a comment |
| Task Assigned | workspace_task_assigned |
A task is assigned to you |
| Task Comment / Mention | workspace_task_comment |
New comment or mention on your task |
| Check-In Due | workspace_check_in_due |
Cadence elapsed and no auto-draft created |
| AI Draft Ready | workspace_check_in_drafted |
Workspace Agent drafted your check-in response |
| Member Added | workspace_member_added |
You were added to a workspace |
| Client Invited | workspace_client_invited |
(To the external client) magic-link invite |
| Weekly Digest | workspace_weekly_digest |
Monday recap, posted in-app + emailed |
| Daily Activity Digest | workspace_daily_activity_digest |
Last 24 hours across your workspaces |
Per-user mute: Each member can mute a specific workspace via the mute settings endpoint.
📱 Mobile + Headless API
A /api/v1/workspace/... namespace gives mobile and headless clients parity for the core flows.
| Endpoint | Capability |
|---|---|
GET /workspaces |
List workspaces for the user |
POST /workspaces |
Create a workspace |
GET /workspaces/:id |
Workspace detail |
GET /client-digest |
Pull the client-safe digest |
GET/POST /messages |
Read and create board messages |
GET/POST /tasks, POST /tasks/:id/complete |
Task list, create, complete |
GET /check-ins, GET /my-drafts, POST /responses/:id/approve |
Read check-ins, list AI drafts, approve a draft |
GET /events, GET /hill-charts |
Schedule events and hill chart positions |
POST /reactions/toggle |
Toggle a reaction on any reactable subject |
User Roles & Permissions
| Role | Capabilities |
|---|---|
| Member / Viewer | Read the canvas they have access to, post messages, comment, react, complete tasks assigned to them, respond to check-ins, view hill charts |
| Manager+ | (Default) Create new workspaces — controlled by allowed_creator_roles config (default: manager, admin, super_admin; can be widened to member) |
| Workspace Owner | All member capabilities + edit settings, drag-to-reorder canvas, disable sections, change feature flags, archive / restore / delete, duplicate, generate client digest, accept Hill Chart proposals, invite client, save as template |
| Workspace App Admin | Owner-equivalent across every workspace in the business; configures app-level settings (AI toggles, feature toggles, limits, notification defaults, governance) |
How We Compare
See how MangoApps Workforce stacks up against leading project collaboration tools:
| Feature | MangoApps Workforce | Basecamp | Asana | Monday.com | Notion |
|---|---|---|---|---|---|
| Single canvas (msg + tasks + schedule + files) | ✅ | ✅ | ❌ | ❌ | ⚡ |
| Hill Charts | ✅ | ✅ | ❌ | ❌ | ❌ |
| AI-drafted check-in responses | ✅ | ❌ | ❌ | ❌ | ❌ |
| Client portal with magic-link invite | ✅ | ✅ | 💰 | 💰 | ⚡ |
| Auto-redacted client digest | ✅ | ❌ | ❌ | ❌ | ❌ |
| Recurring check-ins (built-in) | ✅ | ✅ | 💰 | 💰 | ❌ |
| Kanban view | ✅ | ❌ | ✅ | ✅ | ✅ |
| Embedded forms / wikis / libraries | ✅ | ❌ | ❌ | ❌ | ⚡ |
| iCal feed for schedule | ✅ | ✅ | ✅ | ✅ | ❌ |
| Legend: ✅ Included | ❌ Not Available | 💰 Paid Add-on / Higher Tier | ⚡ Limited |
Why MangoApps Workforce?
- 🔗 Unified Platform — Workspaces share users, files (Drive), tasks, forms, libraries, and the AI agent stack with the rest of the suite — no per-app account or integration fee
- 🤖 AI-Native, Approval-Gated — The Workspace Agent drafts and proposes; the human approves. Every AI write emits an audit event
- 🧘 Calm by Default — No Gantt charts, no notification firehose. One canvas per project, granular email categories, and a per-user workspace mute
Getting Started
For Members
- Go to Apps → Workspace to see your dashboard with active workspaces, assigned tasks, and AI drafts awaiting approval
- Open a workspace to land on its canvas — post messages, complete tasks, react with emojis
- Respond to check-ins (or review the AI-drafted response if your owner enabled auto-draft)
- Use the cross-workspace search palette to jump between projects
For Owners
- Click New Workspace (opens in a drawer) — pick a name, icon, and color
- Pick a starter template or build from scratch — Drive provisions automatically on create
- Add members explicitly or link a Notification Recipient Group for rule-based membership
- Configure check-ins (cadence, time, auto-draft on/off)
- Open the Features modal to disable sections you don’t need; drag sections to rearrange the canvas
- Generate the Client Digest weekly, or invite a client via Client Access for live read-only views
For App Administrators
- Go to Apps → Workspace → Settings
- Toggle the AI Agent, Hill Chart auto-update, check-in auto-draft, and client digest features at the business level
- Configure max workspaces, max members, max upload size
- Set who can create workspaces (
allowed_creator_roles) and the default check-in cadence - Review Analytics for AI adoption rate (drafted vs. approved) and most-active workspaces
Best Practices
For Owners
- ✅ Start from a template — even a thin one — so your check-ins, lists, and Hill Chart scopes seed automatically
- ✅ Mark client-sensitive posts as internal-only so the client digest stays clean by default
- ✅ Use a Notification Recipient Group for long-running workspaces (engineering, leadership) — new hires get access automatically
- ✅ Keep sections you don’t use disabled so the canvas stays calm
- ✅ Review the Hill Chart proposals weekly — accepting moves the dot, dismissing teaches the agent
For Members
- ✅ Use the Quick Add omnibox for one-line captures (
task: ...,msg: ...,link: ...,event: ...) - ✅ Convert messages or comments into tasks when the discussion turns into action
- ✅ Approve AI-drafted check-ins promptly — edit before approving if the agent missed nuance
- ✅ Mute workspaces you read-only for, instead of leaving
For Administrators
- ✅ Watch the AI-draft approval rate in Analytics — a healthy rate means drafts are useful; a low rate means the agent needs more activity to learn from
- ✅ Set
max_asset_size_mbandmax_workspaces_per_businessaccording to your storage plan - ✅ Keep
governance_enabledon for automatic content moderation across messages and comments
Frequently Asked Questions
Q: Can the AI agent post or change anything without me approving it?
A: No. Every AI write — check-in responses, Hill Chart positions, suggested to-dos, workspace creation through the agent — flows through Agents::Concerns::AgenticTools, which gates writes behind a confirmation prompt. AI-drafted check-ins persist with ai_drafted: true, responded_at: nil and don’t post until you approve.
Q: How do external clients see my workspace?
A: An owner sends a magic-link invite via Client Access. The client clicks the link in their email and lands on a separate, read-only WorkspaceClientPortal view. They never get a full platform account; the link is a PasswordlessToken scoped to the workspace.
Q: What happens to a workspace if I delete it?
A: It soft-deletes with a 30-day recovery window. Library items unscope (so the Libraries app keeps them); messages, tasks, events, check-ins, hill charts, links, and the Drive cascade-delete with the workspace.
Q: Can I have a workspace that includes everyone in a department without adding them one by one?
A: Yes. Link the workspace to a Notification Recipient Group (e.g., “All Engineering”). Anyone in the group can access; an explicit WorkspaceMembership row is created lazily on first interaction so per-user state (read receipts, mute, role overrides) has somewhere to hang. Digests fan out to both explicit and rule-resolved members.
Q: Where do workspace files actually live?
A: Each workspace gets its own Shared Drive provisioned on create (via Drives::WorkspaceDriveProvisioner). The Files section reads directly from workspace.drive, so versioning, search, and permissions all come from the Drive app.
Related Resources
- Apps & Extensions Overview — The full marketplace catalog
- Tasks App Overview — Workspace tasks share the same model
- Forms App Overview — Embed forms in a workspace section
The Workspace App is what project collaboration looks like when AI is a default teammate, not a bolt-on. One calm canvas, an agent that drafts and proposes, you in control of every write.