# Managing Your Subscription Source: https://docs.spinnable.ai/account/managing-subscription Upgrade, downgrade, cancel, and monitor your Spinnable plan ## Overview Your Spinnable subscription is flexible—upgrade immediately when you need more capacity, or downgrade/cancel at any time with no penalties. ## Upgrading Your Plan ### When to Upgrade Consider upgrading when you: * Consistently reach 80%+ of any plan limit * Need more active workers for growing operations * Require higher external message capacity * Hit AI-capacity limits before month-end You can upgrade anytime, even mid-month. You'll only pay the prorated difference for the remaining days. ### How to Upgrade While logged in, go to [app.spinnable.ai/pricing](https://app.spinnable.ai/pricing) Click "Get started" on the plan you want to upgrade to You'll see the prorated amount for the remaining days in your current billing cycle Your new limits are active right away—workers can immediately use the increased capacity ### Prorated Billing Example **Scenario:** You're on Basic ($50/month) and upgrade to Standard ($149/month) on day 15 of your 30-day billing cycle. **You pay:** * Credit for unused Basic days: -$25 (15 days × $50/30) * Charge for Standard days: +$74.50 (15 days × $149/30) * **Total due now: \$49.50** Your next full month bills at \$149. ## Downgrading Your Plan ### How Downgrades Work Downgrades take effect at the start of your **next billing cycle**, not immediately. This gives you time to: * Adjust your worker configuration * Put extra workers on holidays if needed * Complete any tasks that require current plan limits ### How to Downgrade While logged in, go to [app.spinnable.ai/pricing](https://app.spinnable.ai/pricing) Click "Get started" on the plan you want to downgrade to You'll see confirmation that the change takes effect on your next billing date Continue using your current plan limits until the billing cycle ends ### What Happens When Downgrade Takes Effect **Example: Standard (5 workers) → Basic (2 workers)** On your next billing date: 1. If you have more than 2 active workers, the system will put workers on holidays to match your new limit 2. You'll need to manually choose which workers to keep active 3. All other limits (external messages, AI capacity, recurring tasks) reset to the new plan's limits Before downgrading, review which workers are most critical and ensure they'll fit within your new plan limits. ## Canceling Your Subscription ### How Cancellation Works When you cancel: * Your subscription remains active until the end of your current billing period * You won't be charged for the next month * Your workers remain fully functional until the subscription ends There are no cancellation fees or penalties. Cancel anytime. ### How to Cancel Cancellation is handled through the Stripe billing portal, accessible directly from your billing settings. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, and open the **Billing** tab Click **Manage Billing & Payment** to open the Stripe billing portal In the billing portal, locate your subscription and select the option to cancel it Follow the prompts to confirm — your access continues until the end of the current billing period You'll receive an email confirming your cancellation and the date your subscription ends ### What Happens After Cancellation On your final subscription date: * Your workers become inactive * You lose access to the Spinnable platform * Your data is retained for 30 days in case you want to reactivate After 30 days, your worker configurations, memories, and conversation history may be permanently deleted. ## Monitoring Your Usage ### Where to Check Usage Access your usage dashboard at **Settings > Usage** in your account. ### What You'll See * Current active workers vs. your plan limit * List of active workers and workers on holidays * Quick toggle between Working and On Holidays * Messages sent this billing cycle * Percentage of monthly limit used * Days remaining until reset * Total AI capacity consumed this month * Percentage of AI capacity used * Estimated days until limit based on current usage rate * Active recurring tasks vs. plan limit * List of all scheduled recurring tasks * Option to delete tasks to free capacity ### Usage Notifications Your workers will proactively notify you when: * You reach 80% of any limit * You hit 100% of a limit * You need to take action (like putting workers on holidays) Check your usage dashboard weekly to stay ahead of limits and avoid disruptions. ## Billing & Payments ### Billing Cycle * **Billing frequency**: Monthly only (annual plans not currently available) * **Billing date**: The same day each month when you first subscribed * **Payment method**: Credit/debit card ### Updating Payment Information Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, and open the **Billing** tab Click to add or update your credit card information Your new payment method will be used for the next billing cycle ### Accessing Your Invoices All your past invoices are available in the same place you manage your payment method. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, and open the **Billing** tab Click **Manage Billing & Payment** to open the billing portal You'll find a complete list of all your past invoices. Click any invoice to view or download it as a PDF. Need a tax ID or company name on your invoices? See [Updating Fiscal Information on Invoices](#updating-fiscal-information-on-invoices) below. ### Updating Fiscal Information on Invoices Need to add your company's tax ID (such as a NIF or VAT number), company name, or billing address to your invoices? You can update this directly from your billing settings. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, and open the **Billing** tab Open the payment method section—fiscal details are managed here alongside your payment information Fill in your company name, tax ID (NIF, VAT number, etc.), and billing address Your updated fiscal information will automatically appear on all future invoices Changes to fiscal information only apply to future invoices. Previously issued invoices are not updated retroactively. ### Failed Payments If a payment fails: 1. You'll receive an email notification 2. We'll retry the payment within 3-5 days 3. If payment continues to fail, your account may be suspended 4. Update your payment method to restore service ## Refund Policy Spinnable operates on a monthly subscription with no refunds for partial months. **However:** * You can cancel anytime and won't be charged next month * Upgrades are prorated—you only pay for what you use * No cancellation fees or penalties If you experience technical issues or have concerns, contact support at [support contact page](/support/contact). ## Common Questions Yes! You can upgrade anytime (immediate, prorated) and downgrade anytime (takes effect next month). There are no limits or penalties for changing plans. Workers exceeding your new plan limit go on holidays automatically. You'll need to manually choose which workers to keep active within your new limit. Yes! When you upgrade, all limits immediately increase to your new plan's capacity. You don't have to wait until the next billing cycle. Not currently. You can cancel and resubscribe later, but your data is only retained for 30 days after cancellation. Workers' configurations and memories are retained for 30 days after cancellation. Resubscribe within that window to restore everything. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, open the **Billing** tab, and click **Manage Billing & Payment**. You'll find all your past invoices there, available to view and download as PDFs. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, open the **Billing** tab, and click **Update Payment Method**. You can enter your company name, tax ID (NIF, VAT, etc.), and billing address there. Changes apply automatically to all future invoices. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, open the **Billing** tab, and click **Manage Billing & Payment** to open the Stripe billing portal. From there, you can cancel your subscription directly. Your access continues until the end of your current billing period. ## Need Help? Questions about billing or plan changes? Reach out to our team. Learn more about what each plan limit means # Plans & Pricing Source: https://docs.spinnable.ai/account/plans-and-pricing Choose the right plan for your needs ## Overview Spinnable offers three plans designed to grow with your business. All plans include access to all available integrations and tools—no feature gates on tooling. For the most up-to-date pricing information, visit the pricing page in your account. ## Plan Comparison **\$50/month** Perfect for getting started with AI workers * 2 active AI workers * 30 external messages/month * 2 recurring tasks * AI capacity for getting started * No co-managers * Email support **\$149/month** Build your AI team to grow your business * 5 active AI workers * 150 external messages/month * 5 recurring tasks * More than 3× the AI capacity of Basic * Up to 2 co-managers per worker * **Custom worker email address** * Email support **\$399/month** Run your business with AI at scale * Unlimited active AI workers * 400 external messages/month * 50 recurring tasks * More than 8× the AI capacity of Basic * Up to 2 co-managers per worker * **Custom worker email address** * Priority support All prices shown in USD. Taxes/VAT may apply based on your location. ## Which Plan Is Right for You? ### Start with Basic if you: * Are trying out Spinnable for the first time * Need 1-2 specialized workers (e.g., Executive Assistant + Sales Assistant) * Primarily communicate with your workers (not having them send many external messages) ### Upgrade to Standard if you: * Need a small team of specialized workers (3-5 workers) * Have workers regularly communicating with external contacts (clients, prospects, vendors) * Run multiple automated workflows or recurring tasks * Want to share worker management with colleagues via [Co-Managers](/guides/co-managers) * Need workers to send and receive email from a **custom email address** (e.g., `support@yourcompany.com`) ### Choose Premium if you: * Need a full AI workforce with many specialized roles * Have high-volume external communication needs * Run your operations primarily through AI workers * Need priority support for business-critical workflows ## What's Included in All Plans ### All Integrations & Tools Every plan includes access to all available integrations (Gmail, Google Calendar, Slack, Notion, and more). There are no premium-only tools—connect whatever your workers need. ### Unlimited Internal Communication Talk to your workers as much as you want via email, WhatsApp, or chat. Internal messages between you and your workers don't count toward any limits. ### Persistent Memory & Learning All workers on all plans have the same learning capabilities. They remember your preferences, adapt to feedback, and build expertise over time. ### Multiple Communication Channels Configure your workers to use email, WhatsApp, Slack, or a combination based on their role—available on all plans. ## Understanding Plan Limits Each plan has specific limits designed to match different usage patterns. Learn more about what each limit means and what happens when you reach them: Understand external messages, AI capacity, active workers, and recurring tasks ## Next Steps Learn how to upgrade, downgrade, or cancel your plan Check your current usage under the Usage tab in Settings # Teams Source: https://docs.spinnable.ai/account/teams Collaborate with your team by sharing workers ## Why Teams? Teams are groups of AI workers and human colleagues who collaborate and share workers — creating a single directory where people and AI co-workers sit side by side. See and talk to your colleagues' workers, even ones you didn't hire. If your teammate has a Product Manager worker, you can interact with it directly — no separate setup needed. Workers in a team can access the team directory. They can look up a colleague's email, know who's on the team, and understand the team structure — just like a real team member would. Think of a team as a single directory where humans and AI coworkers sit side by side. Anyone can find and reach anyone — whether they're a person or a worker. Teams are available on all plans. You can be part of multiple teams at the same time. **Note on Workspaces:** Teams represent collaborative groups of AI workers and human colleagues who share workers within Spinnable. Teams are distinct from future building-level Workspace concepts. *** ## Creating a Team 1. Open **Teams** from the left sidebar 2. Click **Create Team** 3. Name your team and optionally select existing AI workers to assign directly to the team during creation 4. Click **Create** You become the **Owner** of the new team and will be guided through inviting human team members right away. If you don't belong to any team yet, the Teams view provides empty-state guidance and workspace prompts highlighting team collaboration benefits. *** ## Team Roles | Role | Access | | ---------- | --------------------------------------------------------------------------- | | **Owner** | Full control over team settings and member management | | **Member** | Access shared workers, create personal workers, and add workers to the team | *** ## Plans & Billing for Members You don't need a paid plan to join a team. * **With a paid plan**: You hire your own workers (you're their manager), *and* you get access to your colleagues' shared workers through the team. * **Without a paid plan**: You can still join and talk to your colleagues' workers — you just won't have your own. **Easiest way to get started:** Sign up for a free trial to explore and hire your own workers. If you cancel before the trial ends, you won't be charged. Your workers become inactive, but you keep access to your team and your colleagues' shared workers. Workers recognize team members as colleagues, not as the manager. They'll accept tasks and collaborate with you, but some actions — like changing worker settings — are reserved for the worker's manager. *** ## Inviting Team Members 1. Open **Teams** from the left sidebar 2. Open your team 3. Click **Invite Member** 4. Enter their email address The invited person will receive an email notification. See below for what they need to do next. *** ## Accepting an Invitation If someone invited you to their team, here's how to join: Go to [spinnable.ai](https://spinnable.ai) and sign in. If you don't have an account yet, create one using the **same email address** the invitation was sent to. Open **Teams** from the left sidebar. Look for the **Pending Invitations** section. You'll see the team name and who invited you. Click **Accept** to join the team. You'll immediately get access to the team's shared workers. **Can't find the invitation?** Make sure you're signed in with the same email address that was invited. If you created an account with a different email, ask the team owner to resend the invitation to your current email. *** ## Removing Members 1. Open **Teams** from the left sidebar 2. Open your team 3. Click the member you want to remove 4. Click **Remove** and confirm *** ## Choosing Which Workers to Share Not every worker needs to be added to the team. Think of it like a real team — some roles serve the whole team, others are personal. **Workers you'd typically share:** * Product Manager — helps the whole team with roadmap questions * Support Specialist — handles tickets across the team * Operations Manager — coordinates team-wide processes **Workers you'd typically keep private:** * Personal Assistant — manages your calendar, email, personal tasks * Executive Assistant — handles sensitive or private matters * Family Manager - handles family matters ### How to Add or Remove a Worker from a Team Managers can share a worker into an existing team or create a new team directly from the chat header or through settings. #### Option 1: Share from the Chat Header (Fastest) 1. Open the worker's chat interface. 2. Click the **Share** button located in the top chat header. 3. Select an **existing team** to share the worker into, or click **Create new team** to set up a new team immediately. #### Option 2: From Worker Settings 1. Open the worker page you want to manage 2. Go to **Settings** (gear icon) 3. Scroll to the **Teams** section 4. Add the worker to a team, or click **Remove** to take them out You can add a worker to multiple teams. For example, your Product Manager could be part of both your company team and a project-specific team. *** ## The Team Directory Once your team has members and shared workers, you get a **team directory** — a visual overview of your entire team. ### What You'll See The directory shows all **human members** and **AI workers** in one view. You can switch between: * **List view** — a searchable table of all members and workers * **Org chart view** — a visual tree showing who manages which workers You can filter by type (people or workers) and by manager. **Privacy & Email Masking:** Email addresses across the team directory, pending invitations, and overview cards are masked by default for enhanced privacy. Click or hover over the copy action next to any masked address to quickly copy the unmasked email address to your clipboard. ### What Workers Can Do with the Directory Workers that belong to a team can **look up information about the team**. For example: * *"Who's part of our team?"* → The worker lists all human members and AI workers * *"What's João's email?"* → The worker looks it up from the team directory * *"Who manages the Marketing worker?"* → The worker checks the org structure This means your workers understand the team context — they know who to reference, who to CC, and how the team is structured. *** ## Co-Managers: Sharing Worker Management Teams let team members *interact* with shared workers. But what if you need a colleague to actually *manage* a worker — change its settings, connect tools, or update its knowledge? That's what [Co-Managers](/guides/co-managers) are for. You can give up to 2 trusted colleagues manager-level access to any of your workers, without giving up primary management. Share management access to your workers with trusted colleagues *** ## Switching Between Teams You can be part of multiple teams at the same time. Use the **Teams** section in the sidebar to move between them. Each team has its own directory, shared workers, and settings — all accessible from one account. # Understanding Usage Limits Source: https://docs.spinnable.ai/account/usage-limits What plan limits mean and what happens when you reach them ## Overview Each Spinnable plan includes specific usage limits. This guide explains what each limit means in practical terms and what happens when you reach them. Monitor your current usage anytime at **Settings > Usage** in your account. ## Active Workers ### What It Means **Working workers** can respond to messages, perform tasks, and execute their responsibilities. **Workers on holidays** are essentially paused—they won't respond to emails, messages, or perform any tasks. Your plan determines how many workers can be active at the same time: * **Basic**: 2 active workers * **Standard**: 5 active workers * **Premium**: Unlimited active workers ### How It Works You can hire as many workers as you want on any plan, but only a limited number can be active based on your subscription. **Example scenario (Standard plan):** 1. You hire 7 workers for different roles 2. Only 5 can be active at once 3. The other 2 remain inactive until you activate them 4. To activate an inactive worker, you must first deactivate one of your active workers ### Managing Active Status To put a worker on holidays or set them to working: 1. Go to the worker's settings page 2. Look for the activation toggle 3. Toggle between Working and On Holidays Workers on holidays won't see or respond to any messages. Make sure the workers you need for daily operations are active. ## External Messages ### What Counts as an External Recipient? An **external message** is any message sent by your worker to someone who is **not your manager account** — in other words, anyone other than you. **What "external" means in practice:** | Scenario | External? | | ---------------------------------------------------------------------------------------- | ------------------------------------------------------- | | Worker emails a client at `client@theirdomain.com` | ✅ Yes | | Worker sends a WhatsApp message to a prospect | ✅ Yes | | Worker emails a vendor | ✅ Yes | | Worker emails a colleague at your *same* email domain (e.g. `colleague@yourcompany.com`) | ✅ Yes — domain matching does **not** exempt a recipient | | You (the manager) email your worker | ❌ No | | Worker replies to your email | ❌ No | | You message your worker on WhatsApp | ❌ No | | Worker messages in Slack | ❌ No | **Domain matching does not define "external."** A recipient is only non-external if they are *you* — the account's manager. Even if a colleague shares your company domain, messages to them count as external. The only way to have co-workers communicate with workers without consuming external message quota is through your [Spinnable Team](/account/team-management), where team members interact directly with shared workers through the platform. ### Manager-to-Worker vs. Messages to People and Workers It helps to think in two categories: * **Manager ↔ Worker communication** — You directing or chatting with your worker, via the Spinnable interface, your worker's @spinnable.app email address, or WhatsApp using your configured number. These never count as external messages. * **Worker → People/external workers** — Your worker reaching out to anyone else, whether via email, WhatsApp, or other channels. These always count as external messages. ### How To/CC/BCC Is Metered External messages are counted **per recipient address**, not per send action. Each address in To, CC, and BCC is counted separately. **Example — a single email with multiple recipients:** Your Sales Assistant sends one email: * To: `prospect@company.com` * CC: `manager@company.com` * BCC: `crm-logger@yourtool.com` That single send counts as **3 external messages** — one for each recipient address. **Two concrete examples:** Your Sales Assistant emails 5 prospects individually (one email each, no CC or BCC). * 5 emails × 1 recipient each = **5 external messages** * Each prospect replies and your worker responds once per reply = **5 more external messages** * You and your worker exchange 20 planning emails on the Spinnable interface = **0 external messages** * **Total: 10 external messages** Your Executive Assistant sends one weekly summary email: * To: 3 team members * CC: 1 external partner * BCC: 1 archive address That single send = **5 external messages** (one per address across To + CC + BCC). Over a month (4 sends): **20 external messages** used just for this one recurring task. ### Monthly Limits * **Basic**: 30 external messages/month * **Standard**: 150 external messages/month * **Premium**: 400 external messages/month ### What Happens at the Limit When you reach your external message limit: 1. Your worker will inform you they can't send more external messages 2. They can still communicate with you (the manager) normally 3. External messaging resumes on your next billing cycle or when you upgrade If you frequently hit this limit, consider upgrading to a plan with higher external message capacity, or reviewing whether BCC logging addresses and CC'd internal aliases are consuming quota unnecessarily. ## Token Usage & Capacity ### What It Means AI Capacity is the monthly allowance of resource allocation for your workers to process information, execute tasks, analyze documents, and collaborate across channels. * **Basic**: Positioned for getting started with AI workers * **Standard**: More than 3× the AI capacity of Basic, ideal for growing operations * **Premium**: More than 8× the AI capacity of Basic, built for scale ### Monitoring Usage Check your current token and capacity usage at **Settings > Usage** in your account interface. ### Can I Buy Extra Tokens Mid-Month? **Ad-hoc token top-ups are not available.** There is no way to purchase additional tokens on top of your current plan without changing your plan tier. If you hit your token cap before the end of the month, your options are: Upgrading to the next plan tier immediately raises your token cap and reactivates your workers. You only pay the prorated difference for the remaining days in your current billing cycle. Go to **Settings > Billing** while logged in to upgrade. All token usage resets on your monthly billing date. Check **Settings > Usage** to see how many days remain. Before your next cycle, review the [Optimizing Token Usage](/guides/optimizing-token-usage) guide — small changes to how you structure tasks and conversations can significantly reduce consumption. If you believe your token cap was reached due to unexpected behavior (for example, a worker looping on a task), contact [support@spinnable.ai](mailto:support@spinnable.ai) with details. Annual plans are not currently available — billing is monthly only. This means the fastest path to more tokens is always upgrading your plan tier, which takes effect immediately. ## Recurring Tasks ### What It Means Recurring tasks are automated workflows scheduled to run repeatedly (daily, weekly, monthly, etc.). ### Monthly Limits * **Basic**: 2 recurring tasks * **Standard**: 5 recurring tasks * **Premium**: 50 recurring tasks ### What Happens at the Limit When you try to schedule more recurring tasks than your plan allows: 1. Your worker will inform you they can't schedule additional recurring tasks 2. Your existing recurring tasks continue to run normally 3. You can delete an existing recurring task to make room for a new one 4. Or upgrade your plan for more capacity One-time scheduled tasks (e.g., "Remind me tomorrow at 3pm") don't count toward this limit—only tasks that repeat on a schedule. ## What Happens When You Hit a Limit? ### General Behavior When you reach any plan limit: 1. **Your worker notifies you** - They'll explain which limit was reached and suggest solutions 2. **That specific capability pauses** - Only the limited feature is affected, not your entire account 3. **Other features continue working** - Your workers remain functional for other tasks ### Your Options All limits reset on your monthly billing date. Upgrade immediately for higher limits. You'll only pay the prorated difference for the current month. Audit scheduled tasks or multi-recipient emails to free up capacity. ## Planning Your Usage 1. **Monitor regularly** - Check Settings > Usage weekly 2. **Plan seasonal spikes** - Upgrade temporarily during busy periods 3. **Specialize workers** - Focused workers often use tokens more efficiently 4. **Review recurring tasks** - Audit scheduled tasks monthly 5. **Watch multi-recipient emails** - Each To/CC/BCC address counts separately toward external message quota ## Next Steps Learn how to upgrade when you need more capacity Compare plans to find the right fit for your usage Tips to get more done within your token cap Control who your workers can contact # Understanding AI Workers Source: https://docs.spinnable.ai/concepts/ai-workers Learn what makes AI workers different from traditional automation # Understanding AI Workers Think of AI workers as **digital colleagues**. They're not just another piece of software—they're team members you can communicate with naturally, just like you would with any other person on your team. ## Available on Your Channels AI workers meet you where you already work: They have their own email addresses and can send/receive messages Text them just like you would a colleague They're in your workspace, ready to collaborate Chat with them directly in the app No need to learn new tools or change how you communicate. Just talk to them like you would anyone else on your team. ## They Remember and Learn Here's what makes AI workers different from traditional automation: ### Memory that evolves At the end of each conversation, your AI worker updates their memory. They remember context, preferences, and past interactions. **The more you work with them, the better they understand your needs** and how you work. Workers build up knowledge about your business, your people, and your processes over time—unlike static tools. ### Tools at their fingertips Just like you have access to Gmail, Notion, or your calendar, AI workers can use tools too. They can check your calendar, update databases, send emails, and more—whatever they need to get the job done. ### Task scheduling AI workers can remember to do things, both one-time and recurring: * "Every Sunday at 4pm, book a tennis court" * "Every Monday at 8am, check if we've made any updates on our roadmap in Notion" * "Remind me about the quarterly review next Thursday" ## Asking About Spinnable Your workers have access to Spinnable's knowledge base and can answer questions about the platform itself. Simply mention "spinnable" in your conversation to get help with: * Platform features and capabilities * How to configure settings * Troubleshooting common issues * Best practices for working with your AI team For example, you can ask your worker "How does Spinnable handle email permissions?" and they'll provide accurate information from the official documentation. ## Onboarding Matters Think of hiring an AI worker like hiring a new team member. They need context to be effective. * What does your business do? * What's their role and what are they responsible for? * What are your preferences and priorities? For example, if you're hiring an assistant, they need to know: * Your meeting preferences and calendar guidelines * Who you typically take meetings with * How you like to be briefed on your schedule * Your communication style and priorities **The more context you provide upfront, the better they'll perform.** Just like a new colleague, they'll get better over time as they learn your business and working style. ## They Can Interact with Others AI workers aren't locked behind a firewall—they're **accessible digital colleagues**. If you want, they can: * ✅ Respond to emails from clients or team members * ✅ Answer questions in Slack channels * ✅ Handle WhatsApp messages from stakeholders They evolve and learn from every interaction, building up knowledge about your business. ## Security & Information Sharing **Be mindful about what you share.** AI workers are like any team member—they have access to the information you give them, and they can communicate with others. ### Good practices Provide enough context and data for them to do their job effectively. Don't be overly restrictive. Give explicit guidance about when and how to share sensitive information. Treat them like you would a contractor or new employee in terms of information access. Avoid sharing credit card numbers, passwords, or highly sensitive personal data. Don't provide access to information you'd never want disclosed. If something is confidential, either don't share it or give very explicit instructions about how it should be handled. **The principle:** Give them just enough information to be effective, but not more than necessary. If something is confidential, either don't share it or give very explicit instructions about how it should be handled. ## Key Takeaways * 🤝 AI workers are digital colleagues available on email, WhatsApp, Slack, and the Spinnable interface * 🧠 They remember context and learn your business over time through their evolving memory * 🛠️ They have access to tools and can schedule tasks (one-time or recurring) * 📚 Onboard them thoughtfully—context makes them more effective * 👥 They can interact with others if you want them to * 🔒 Be mindful about information sharing, just as you would with any team member ## Next Steps Learn how to reach your workers across different platforms Understand how workers remember and learn Connect workers to your favorite apps Ready to get started? Follow our quick start guide Voice call capabilities for AI workers are coming soon, enabling phone-based interactions alongside email, WhatsApp, and Slack. # Communication Channels Source: https://docs.spinnable.ai/concepts/communication-channels Learn how your workers communicate with you and your team across email, WhatsApp, Slack, and the Spinnable interface Your Spinnable workers aren't locked into a single chat interface. They meet you where you already work — **email, WhatsApp, Slack, or the Spinnable interface**. This is one of the biggest differences between Spinnable and traditional AI tools. Think of it like hiring a human employee: they have a desk phone (Spinnable interface), email, Slack, and a mobile number (WhatsApp). They can handle conversations on all of them, simultaneously. ## Available Channels Your worker's primary workspace — always available Workers have their own email addresses Message workers on the go Collaborate in your team workspace *** ## Spinnable Interface The **Spinnable interface** is your worker's primary workspace. This is where you: * Start new conversations * Review past conversations * Monitor worker activity * Manage worker settings and knowledge * Give structured feedback ### Chat Composer & Real-time Steering The Spinnable interface chat composer includes powerful features for managing live interactions: * **Auto-focus**: Navigating to or switching between AI workers automatically focuses the composer input field so you can start typing immediately without extra clicks. * **Intelligent URL Pasting**: Pasting copied URLs or web browser tab links into the chat composer preserves the full web address directly instead of stripping it to the page title. * **Unified Composer Actions**: Access file attachments, connected tools, and @mentions for human teammates or AI workers directly from a single unified action menu inside the chat composer. * **Interrupt and Steer Live Runs**: If a worker is currently processing or generating a response, you can queue a new message and click **Send now** on the queued-message rail. This immediately cancels the current in-flight generation and steers the worker using your new input without losing conversation context. * **Live Chat Share Links & Guest Session Resilience**: You can share live chat sessions via link with external collaborators or guests. Realtime worker session subscriptions use dedicated channels per session, and guest sessions automatically recover connection state without falsely reporting expired link errors. ### When to use the Spinnable interface * **Complex instructions** or training sessions * **Reviewing work** and providing detailed feedback * **Checking worker memories** or knowledge base * **Managing permissions** and tool access * **Bulk operations** that need your full attention **Pro tip:** The Spinnable interface gives you the fullest picture of your worker's activities and capabilities. Use it for onboarding and major configuration changes. ### Shared Worker-Chat Links & Guest Access You can share direct worker-chat links with colleagues, clients, or guests to give them access to specific worker conversations. * **Guest Access & File Downloads**: Guests using shared worker-chat links can view the conversation history and directly view or download any worker-generated files (such as PDFs, reports, or spreadsheets). * **Appended Tracking Parameters**: Shared chat links generated from the interface automatically include appended tracking parameters (such as UTM source and campaign tags) to track traffic and engagement across shared channels. *** ## Email Every worker comes with **their own Spinnable email address** (e.g., `alice.harris@spinnable.app`). This email works out-of-the-box with **no setup required** — your worker automatically receives all emails sent to their address. ### Two types of email capabilities **What it does:** * ✅ Worker receives ALL emails sent to their @spinnable.app address * ✅ Worker can reply to emails * ✅ Works immediately, no configuration needed * ✅ Perfect for most use cases **Example:** Forward customer inquiries to `alice@spinnable.app`, and Alice will respond automatically. **What they enable:** * ✅ Worker can send emails FROM your personal/company email address * ❌ Worker does NOT automatically receive emails to your inbox * ⚠️ Requires Read Email tool + explicit instruction to check inbox * ⚠️ Replies to those emails go to YOUR inbox, not the worker's **When to use:** You want emails to look like they're coming from you (`you@yourcompany.com`) instead of the worker's Spinnable address. **Common misconception:** Connecting Gmail/Outlook as a tool does NOT make your worker automatically respond to your inbox. You'll need to: 1. Add the **Read Email** tool 2. Explicitly instruct the worker to check your inbox 3. Understand that replies will land in YOUR inbox ### Email threading behavior * **Spinnable treats each email as a new conversation**, but your worker sees the full email thread history for context * If someone replies to your worker's email, the worker understands the conversation flow * Each thread maintains its own context within the Spinnable system ### Custom worker email address **Standard and Premium plan** users can give their worker a custom email address (e.g., `support@yourcompany.com` or `valeria@yourcompany.com`) so that all email sent and received by that worker appears under your own domain — no Gmail/Outlook integration required. Custom worker email is available on the **Standard plan and above**. See the [Using a Corporate Email](/guides/corporate-email) guide for full setup details. If you are on the Basic plan or prefer to use an existing Gmail or Outlook account, you can also configure your worker to send from that address using the Gmail/Outlook tools. Here's how that flow works: 1. Connect Gmail/Outlook tool to your worker 2. Tell the worker to send emails from the connected email using the tool (e.g., `support@yourcompany.com`) 3. Recipients reply to that address 4. **Those replies go to YOUR inbox** (not the worker's Spinnable inbox) 5. You need to forward them to your worker's @spinnable.app address OR instruct the worker to monitor your inbox using the Read Email tool ### When to use email * **Customer support** inquiries * **Asynchronous communication** that doesn't need instant response * **External stakeholders** who don't have access to your other tools * **Formal communications** that need email trail - **CC your worker** on relevant email threads to bring them into the loop - **Use clear subject lines** — they help your worker categorize and prioritize - **Forward emails** to your worker's address instead of copy-pasting (preserves threading) - **Set expectations** in your worker's job policy about email response time and style * **Assuming connecting Gmail/Outlook = automatic inbox monitoring.** Connecting Gmail or Outlook gives your worker the *ability* to read or send from that account, but it does NOT make the worker automatically monitor the inbox or always send from that address. You need explicit configuration for each. See the [Using a Corporate Email](/guides/corporate-email) guide for the full setup. * Not forwarding full email threads (worker loses context) * Forgetting to add the worker's email to your contacts (emails might go to spam) * Sending time-sensitive requests via email instead of WhatsApp or Slack *** ## WhatsApp Workers can communicate via **WhatsApp** using your account's configured phone number. This is perfect for on-the-go communication. ### Two types of WhatsApp setup Before diving into setup, it's important to understand the two distinct WhatsApp modes. They serve different purposes and are **not interchangeable**. **What it is:** A Spinnable-managed WhatsApp number shared across all your workers. It is set up and maintained entirely by Spinnable — you do not configure it, scan any QR code, or connect your own phone number. * ✅ Works out-of-the-box, no setup required * ✅ All workers accessible via a single number using `/commands` * ✅ Maintained by Spinnable * ❌ Cannot join WhatsApp groups * ❌ Workers do not have individual WhatsApp identities **This is the default for all accounts.** Most users never need anything beyond this. **If the shared Spinnable number is temporarily unreliable**, wait a few hours and try again — do not attempt to reconnect, scan a QR code, or link your own number. Those actions apply to the **custom number** flow below and will not fix a temporary issue with the shared number. See [Troubleshooting WhatsApp](/troubleshooting#whatsapp-shared-number-temporarily-unreliable) for more. **What it is:** An optional dedicated WhatsApp number you provide, linked to a single worker. This gives that worker their own WhatsApp identity. * ✅ Worker has their own dedicated WhatsApp number * ✅ Direct messaging without `/commands` * ✅ Can join WhatsApp groups * ⚠️ Requires a separate phone number and QR-code linking * ⚠️ The worker takes over that WhatsApp account completely **Only use this when you intentionally want a worker to have a dedicated WhatsApp presence.** It is not a fix for issues with the shared Spinnable number. See the [Custom WhatsApp Number](/guides/custom-whatsapp-number) guide for setup instructions. ### Setup (shared Spinnable number) WhatsApp setup is **account-level**, not per-worker. One phone number applies to all workers. Click your profile avatar in the bottom-left corner of the sidebar, select **Settings**, and add your phone number under the **Profile** tab. **Common issue:** Not setting up your phone number in your profile → worker can't recognize you as the manager when you message them. Each worker has a unique **4-digit alphanumeric WhatsApp ID** (e.g., `A4B9`). Find it in: **Worker → Settings tab** Two ways to initiate contact: **Option 1: Switch between workers** * Message your configured WhatsApp number * Type `/firstname` or `/firstname lastname` to switch to that worker * Start your conversation **Option 2: Direct access with WhatsApp ID** * Message your Spinnable WhatsApp number * Type `/WorkerWhatsAppID` (e.g., `/A4B9`) * Worker responds immediately **Other helpful commands:** * `/help` — Get list of available commands * `/list` — See all your workers and their IDs ### External users Want someone outside your team to message your worker via WhatsApp? 1. Ask your worker to send a WhatsApp message to the external contact 2. Contact receives message from your Spinnable WhatsApp number 3. They can reply directly — no special commands needed **This is the simplest approach.** The worker establishes the connection. 1. Share your Spinnable WhatsApp number with the external contact 2. Give them the worker's WhatsApp ID (e.g., `A4B9`) 3. They message your number with `/A4B9` 4. Worker responds **Note:** This requires sharing the worker's ID ahead of time. ### File Support Workers can send and receive files through WhatsApp—documents, images, PDFs, and more. **Supported files:** * Documents (PDF, DOCX, XLSX, TXT, CSV) * Images * Spreadsheets and data files * Whatsapp Voice notes **File size limit:** 16 MB per file **How to use:** * Attach files to your WhatsApp messages as normal * Workers download and process file contents automatically * Ask your worker to create and send files back to you Reference files by name in your messages: *"Review the contract.pdf I just sent"* ### WhatsApp Groups **Requires a custom WhatsApp number.** Your worker needs a [dedicated WhatsApp number](/guides/custom-whatsapp-number) to participate in group chats. Workers using the shared Spinnable number cannot join groups. **How it works:** * Add your worker's custom WhatsApp number to any WhatsApp group * The worker reads every message in the group and **decides autonomously** whether to respond * When relevant, the worker jumps in to answer questions, take action, or provide information — just like a human teammate * The worker maintains separate context for each group conversation **AI Capacity usage:** Workers in WhatsApp groups are exposed to all messages in the group, which can increase AI capacity consumption. Start with small, focused groups to keep usage manageable. **Best starting point:** Try adding your worker to a small, focused group — like a project team or customer support channel — before scaling to larger groups. ### When to use WhatsApp * **Quick questions** while away from your desk * **Mobile-first workflows** (field workers, traveling, etc.) * **Personal, informal communication** style - **Set up your phone number first** before trying to message workers - **Switch workers explicitly** using `/firstname` to avoid confusion - **Share worker WhatsApp IDs** with external contacts who need access *** ## Slack Slack is a **communication channel** for your workers, not a standard integration in Settings > Tools. Workers join your Slack workspace as full team members so they can participate in channels and threads alongside human colleagues. ### Setup Process (\~10 minutes) In Slack, select **Invite people** and enter your worker's Spinnable email address (e.g., `worker@getspinnable.ai`). **Important:** Always send individual invites. Do not enable workspace auto-join for the `@getspinnable.ai` email domain. Your worker handles their setup process autonomously. The process normally completes within about 10 minutes. * **Invite Acceptance:** When the worker accepts the invite, their name and account will appear in Slack. However, this initial appearance only means the user account exists — the worker is not yet reachable or ready to interact. * **Visual Confirmation:** Setup is complete when the worker's face appears as their Slack profile picture. * **Final Email:** Your worker will also send you a final confirmation email when setup is fully finished. Wait for your worker's final confirmation email before messaging them in Slack. Once setup is complete, add your worker to relevant channels and **@mention** them to start collaborating. ### Key Considerations Before Inviting * **Individual Workspace Invite:** Send an individual Slack workspace invite directly to your worker's Spinnable email address. * **Invite Permissions:** The person sending the invite must have member-invite permissions in the Slack workspace. * **App Installation Policy:** Workspace settings must allow members to install the Spinnable App. * **Paid Seat Impact:** Workers join as full Slack members, which may consume a paid seat on paid Slack plans. * **Workspace Limits:** Each worker can only be connected to one Slack workspace at a time for now. ### How Workers Behave in Slack * In 1:1 DMs, workers reply without an @mention. * In channels and group DMs, workers require both an explicit @mention and membership in the conversation. * Replies remain in the originating thread. * When several workers are mentioned separately, each worker can respond. * Workers ignore their own messages to avoid loops. ### Removing a Worker from Slack To remove a worker from your Slack workspace, deactivate their user account directly in your Slack workspace administration. There is no separate Spinnable removal flow. ### Compact Troubleshooting Ensure your Slack user role has permission to invite new members to the workspace. Your Slack workspace settings must permit members to install the Spinnable App. Account acceptance creates the Slack user account, but setup is still in progress until the worker's face appears in their profile picture and they send a final confirmation email. Please wait for the final email before messaging. * **@mention workers explicitly** to trigger responses * **Use threads** for multi-turn conversations * **Introduce your worker** to the team when they join a channel. *(That’s just good manners.)* *** ## Voice Calls Talk to your workers by voice for real-time collaboration. Click the **Call** button on any worker's page to start a voice conversation. You can hang up or cancel the session at any time — including while the connection is still establishing — to prevent stuck call states. Voice calls are currently in **beta**. Workers can use tools and complete tasks during calls, but are slightly less reliable than text-based communication. ### When to use voice * **Real-time discussions** that benefit from back-and-forth dialogue * **Hands-free work** when multitasking or away from keyboard * **Quick questions** that don't need written documentation * **Brainstorming** where you want to think out loud *** ## Multi-Channel Operations Here's what happens when the same worker operates on multiple channels: ### Simultaneous operation Your worker can handle conversations on **all channels at the same time**: * Responding to emails * Chatting on WhatsApp * Participating in Slack threads * Answering questions on the Spinnable interface **They don't get confused.** Each conversation is tracked separately. ### Context and memory **How it works:** * Each channel maintains **separate conversation threads** * There's **no automatic context sharing** between channels * Your worker's **overall memory is unified** (they remember who you are, your preferences, past work) * Channel-specific preferences can be set through feedback **Example scenario:** * You email your worker: "Draft a blog post about AI" * Later, you message on WhatsApp: "How's that blog post going?" * The worker WON'T automatically connect these — they're separate conversations * **Solution:** Reference the email or provide context in your WhatsApp message ### Tone adaptation Workers **automatically adjust their communication style** based on the channel: * **Email:** More formal, structured * **WhatsApp:** Casual, concise * **Slack:** Collaborative, team-oriented * **Spinnable interface:** Professional, detailed You can reinforce this by giving feedback like: "Be more casual on WhatsApp" or "Keep Slack responses brief and actionable." ### Memory question **Q: "If I teach my worker something on email, will they remember it on WhatsApp?"** **A:** Yes. Your worker's memory is unified across all channels. However, whether they apply that learning on a specific channel depends on how you instruct them. For example: * General instruction: "Always use bullet points" → applies everywhere * Channel-specific: "Use bullet points in emails only" → applies to email channel *** ## Security & Access Control You can control who can contact your workers via email and WhatsApp. ### Blocking external users Go to **Worker → Settings** Toggle settings to: * Block external emails * Block external WhatsApp contacts Only users within your Spinnable account will be able to reach the worker. For comprehensive security guidance, see our [Security Best Practices](/guides/security-best-practices) guide. *** ## Next Steps Give your workers access to Gmail, Google Calendar, and other integrations Learn how to organize and scale your team of workers Keep your workers and data secure Train your workers through conversation and feedback # How Workers Learn Source: https://docs.spinnable.ai/concepts/how-workers-learn Understanding how AI workers improve through conversation and memory ## Overview Spinnable AI workers learn and improve through two complementary systems: 1. **Conversational Refinement** - Real-time learning during interactions 2. **Long-term Memory** - Persistent knowledge that carries across conversations This dual approach allows workers to both adapt immediately to feedback and retain important information over time. *** ## Conversational Refinement ### How It Works During a conversation, workers learn from: * **Corrections** you provide * **Clarifications** you offer * **Preferences** you express * **Context** you share This learning is active throughout the entire conversation, allowing the worker to adjust its approach in real-time. ### Example ``` You: "Create a sales report" Worker: [Creates generic report] You: "Actually, I prefer bar charts over pie charts, and always include quarter-over-quarter comparison" Worker: [Adjusts current report and remembers for this conversation] ``` The worker will apply these preferences for the rest of the conversation. ### Limitations * Learning persists only within the current conversation * Resets when you start a new conversation * Best for immediate corrections and session-specific preferences *** ## Long-term Memory ### What Gets Remembered Workers store important information in their memory knowledge base: * Communication style preferences * Favorite tools and formats * Decision-making criteria * Work schedule and availability * Team structure and roles * Project backgrounds * Company policies * Standard procedures * Industry-specific terminology * Technical specifications * Best practices * Historical decisions and rationale * How you like tasks completed * Common workflows * Quality standards * Exception handling ### How Memory Is Created During conversations, the worker recognizes potentially valuable information worth remembering. The worker asks: "Should I remember this for future conversations?" You approve or decline the memory suggestion. Approved information is stored in the worker's knowledge base. ### Memory in Action **First Conversation:** ``` You: "When I ask for reports, I want them in PowerPoint format with our company template, and always include an executive summary on the first slide" Worker: "I'll remember that preference. Should I store this for all future reports?" You: "Yes, please" Worker: ✓ Memory saved: Report format preferences ``` **Later Conversation (Days or Weeks Later):** ``` You: "Create a Q4 sales report" Worker: "I'll create that in PowerPoint format with an executive summary on the first slide, using your company template." [Automatically applies remembered preferences] ``` *** ## Memory Management ### Viewing Memories Access your worker's stored memories through: * The **Knowledge Base** section in worker settings * Direct request: "What do you remember about me?" ### Updating Memories Memories can be modified when circumstances change: ``` You: "I no longer need executive summaries on reports" Worker: "I'll update my memory. Should I remove the executive summary requirement?" You: "Yes" Worker: ✓ Memory updated: Report format preferences ``` ### Deleting Memories Remove outdated or incorrect information: * Manually through the knowledge base interface * By asking: "Forget my preference about \[topic]" *** ## Best Practices Clearly state when information should be remembered long-term vs. just for the current task. When the worker asks to save information, confirm to ensure important preferences are retained. Periodically review stored memories to keep them current and relevant. Help workers understand why something matters for better memory decisions. *** ## Privacy & Control You have complete control over what gets stored in worker memory. Workers will always ask before saving new information. ### Your Rights * **Full visibility** into all stored memories * **Edit access** to modify any memory * **Delete capability** for any stored information * **Approval required** before new memories are created ### Data Handling * Memories are specific to each worker * Information is encrypted and secured * You can export or delete all memories at any time * Memories are only used to improve your worker's assistance *** ## Common Questions Memories persist indefinitely until you remove them or the worker suggests an update due to changed circumstances. No. Workers selectively identify important, reusable information. Routine task details aren't automatically stored. You can correct any memory at any time. Simply point out the error, and the worker will update its knowledge base. No. Each worker maintains its own knowledge base. However, you can manually share relevant information with other workers. There's no practical limit. Workers efficiently organize and retrieve information regardless of quantity. *** ## Skills: Saving Learned Processes Beyond memory and conversational refinement, workers can also save complex processes as **Skills** — reusable workflows they can execute reliably. When your worker successfully handles a multi-step process (like processing invoices or generating reports), you can ask them to save it as a skill. They'll remember the exact steps and execute them consistently in the future. Understand how to create and use skills *** ## Next Steps Save complex processes as reusable workflows Learn about how workers remember information Best practices for training workers Learn how to manage and optimize your workers Understand security and permissions # Scaling Your Workforce Source: https://docs.spinnable.ai/concepts/managing-workforce A practical guide to growing from one worker to a multi-worker team So you've hired your first worker — probably an assistant who's helping with your inbox, calendar, and general tasks. They're learning your preferences, building up context about your work, and becoming genuinely useful. Now what? This guide walks you through the natural progression of scaling from one worker to a small, specialized team of 4-5 workers, based on real patterns we see (and use ourselves). ## The Core Principle: Separate Contexts = Separate Workers Think about hiring workers exactly like building a real team. You wouldn't hire someone to handle both your technical architecture decisions *and* your brand positioning, right? Those require completely different mindsets, knowledge bases, and perspectives. **The same applies to your AI workers.** Each worker should own a distinct functional area with its own context. When you start mixing drastically different domains (like deep technical discussions and marketing strategy) with the same worker, they'll start to get confused — bringing technical limitations into creative brainstorms, or mixing up which hat they're supposed to wear. That confusion is your signal to hire someone new. ## The Natural Progression Pattern Most Spinnable users follow a similar path as they scale: ### Worker #1: Executive Assistant Almost everyone starts here. An EA who: * Manages your calendar and email * Understands your business at a high level * Handles scheduling, coordination, and general administrative tasks * Learns your communication style and preferences This worker becomes your operational backbone. ### Worker #2: Your Biggest Need After your EA is running smoothly, hire for the function where you need the most help. This varies by person, but common second hires include: **Marketing Specialist** * Focused on brand positioning, messaging, and content * Manages marketing assets and campaigns * Thinks creatively about growth and positioning **OR** **Project Manager** * Runs your Notion workspace or project management system * Tracks deliverables and coordinates cross-functional work * Keeps projects on track and organized Choose based on where you're spending too much time or where you need a dedicated perspective. ### Workers #3-5: Key Functions From here, continue adding specialists for distinct functional areas: * **Sales representative** — pipeline management, outreach, deal tracking * **Developer** — code reviews, technical documentation, API research * **Product Manager** — roadmap planning, feature specs, user feedback * **Customer Success** — support tickets, onboarding, client relationships The key is that each worker brings a **specialized mindset** to their domain. ## Real Example: How We Use Spinnable at Spinnable Everyone on the Spinnable team started with the same first hire: an Executive Assistant to handle calendar, email, and general coordination. Then each person hired the specialist they needed most: * Our **CTO hired a Developer** to help with code reviews and technical documentation * Our **CPO hired a Product Manager** to help with roadmaps and feature planning Third and fourth hires filled out other critical functions — marketing, sales, operations — as the business needs grew. ## When to Hire Your Next Worker Watch for these signals: ### 🚩 Context Confusion You've been doing deep technical work with your assistant, then switch to discussing marketing. The worker responds with technical concerns (bugs, implementation details) instead of adopting a marketing mindset. **This means it's time for a specialized marketing worker.** ### 🚩 "Who Do I Ask?" You find yourself thinking "I'm not sure which worker to bring this to" because multiple workers could theoretically handle it, but none are the obvious choice. **You probably need a specialist for that domain.** ### 🚩 Overloaded Worker One worker is juggling too many completely different contexts — technical specs, customer support, and brand strategy all in the same conversation thread. **Split those domains across focused workers.** ## Best Practices for Multi-Worker Teams ### Hire Specialists, Not Generalists It's better to have clear ownership of functional areas than multiple workers who all "kind of" do everything. When you need marketing help, you should know exactly who to talk to. ### Start Small, Scale by Need You don't need to hire all roles at once. Start with 3-4 workers covering your core needs, then add specialists as clear gaps emerge. ### Preview Candidate Voice Samples When browsing candidates in the Worker Marketplace before hiring, each candidate card includes an **audio voice-sample preview**. Click play on any candidate card to hear their voice tone and speech cadence before bringing them onto your team. ### Give Each Worker a Distinct Domain When hiring through the Marketplace or Bob, be specific about the functional area: ✅ "I need a marketing specialist to help with brand positioning, campaign messaging, and content strategy" ❌ "I need another assistant to help with various tasks" The clearer the domain, the better your worker will be at owning it. ### Let Workers Learn Through Conversation Just like your first worker, each new hire will learn your preferences, style, and needs through conversation. You don't need to configure them perfectly upfront — they'll adapt as you work together. Give feedback naturally: *"Keep project updates to 3-4 bullets"* or *"When discussing marketing, focus on messaging not technical feasibility."* ## Sharing Workers Across Your Team Once you have a solid team of specialists, managers can share them with colleagues directly from the chat header into an existing team or a new team through **Teams** — groups of AI workers and human colleagues who collaborate and share workers. This means your teammates can interact with your Product Manager, Support Specialist, or any worker you choose to share — without needing to hire their own. You stay in control: decide which workers are shared (team-serving roles) and which stay private (personal assistants). Learn how to create teams, invite team members, and choose which workers to share. ## Common Questions **Hire a new specialist when:** * The knowledge domains are completely different (technical vs. creative, for example) * Your current worker is mixing contexts or getting confused **Expand an existing worker when:** * The new tasks are closely related to their current domain * Example: Adding calendar management to an admin worker who already handles email Most users settle into 4-5 specialized workers covering their core functional areas. You'll know you need more when you have clear, distinct domains that aren't being served well by your current team. Don't over-hire initially — let the needs emerge naturally. Workers in the same **team** can look up information about each other and about human team members — like emails, roles, and who manages whom. While they don't directly message each other (yet), you can relay context between them. For example, you might ask your Marketing worker for positioning ideas, then share those with your Developer to inform technical priorities. You orchestrate the collaboration. → [Learn more about Teams](/account/teams) Workers are flexible. If you hired a "Marketing Specialist" but realize you need them to also handle some sales work, just tell them conversationally. For major role changes, you can update their job policy in the worker's Knowledge section. Workers adapt through feedback, just like human employees. ## Next Steps Ready to hire your next specialist? Talk to Bob to bring on your next team member Learn how workers retain and use information Give workers access to the tools they need # Projects Source: https://docs.spinnable.ai/concepts/projects How workers manage multi-step work that spans days, weeks, or many conversations ## What are Projects? Projects are **living workspaces** your worker maintains for ongoing work that can't be finished in a single conversation. They give your worker a place to track goals, tasks, progress, and important context — so you can pick up exactly where you left off, every time. You might also hear them called **Work Streams**. Same idea: a dedicated thread of work your worker actively owns and advances over time. Projects are designed for work that has a clear goal but unfolds across multiple steps, decisions, and days. If a task takes five minutes, you don't need a project for it. ## When to Use Projects Projects shine when work is ongoing, multi-step, or needs to be tracked over time. * Recruiting a new hire (research, outreach, scheduling, follow-ups) * Launching a new product feature (coordination across multiple tools and people) * Onboarding a new client (weeks of tasks across email, docs, and calendar) * Running a content calendar (planning, drafting, publishing, reviewing) * One-off requests ("Summarize this document") * Quick lookups or simple questions * Tasks fully completed in a single conversation * Recurring automations handled by a skill ## Core Components of a Project Every project your worker maintains has four key parts: | Component | What it is | | ----------- | -------------------------------------------------------------------- | | **Goal** | The clear outcome you're working toward | | **Tasks** | Individual steps or actions needed to reach the goal | | **Summary** | A running snapshot of where things stand right now | | **Notes** | Context, decisions, constraints, and anything else worth remembering | Your worker keeps all of this updated automatically as work progresses. You don't need to re-explain the situation every time — the project holds that context for you. ## A Real Example: Hiring a Content Writer Here's how a project keeps work moving across multiple conversations. **Monday** — You ask your worker to find a freelance content writer. > "Start a project to hire a content writer. We need someone with SaaS experience, €300–500 per article. Start by finding five candidates." Your worker creates the project, defines the goal, and starts researching. *** **Wednesday** — You check in. > "What's the status on the content writer project?" Your worker gives you a summary: three candidates found, two more to research, outreach emails drafted and ready to send. *** **Friday** — You continue. > "Send the outreach emails and add a task to follow up in five days." Done. The project is updated with the new tasks and the follow-up is scheduled. *** **The following week** — No re-explaining needed. Your worker already knows the goal, the candidates, what was sent, and what comes next. The longer a project runs, the more useful it becomes. Your worker builds up rich context over time — so your instructions can get shorter, not longer. ## How to Create a Project You can create a project using the **Project Creation Wizard** in the Spinnable interface or conversationally in chat. ### Method 1: Three-Step Creation Wizard (Interface) When creating a project from the Spinnable interface, a guided three-step wizard helps you structure your project team: Enter a project title and define the overall objective and scope for the work. Select or invite human teammates who need access to collaborate on the project. Assign one or more AI workers to serve as the worker team responsible for executing project tasks. ### Method 2: Conversational Creation You can also start a project simply through conversation with your AI worker: Describe the goal in plain language. You don't need to plan every step upfront — your worker will help structure it. > "I want to start a project to onboard our new client, Acme Corp. The goal is to have them fully set up and active within four weeks." They'll create the project, confirm the goal, and either draft an initial task list or ask a few clarifying questions to get started. Each time you come back, just ask for a status update or give the next instruction. Your worker tracks everything between conversations. As your worker finishes tasks, they'll mark them as **Completed**. You can also do this yourself: "Mark the contract task as done." ## Your Projects on the Board Every project also has a visual home in the app. Open **Projects** from the sidebar to see everything your worker is running at a glance, then click into any project for the full picture. The Projects area lists every active project, each card showing the worker who owns it and where things stand. Inside a project, the **Tasks** tab is a board with **To Do**, **In Progress**, and **Done** columns. Drag any task card between columns to update its status — your worker sees the change right away. The **Overview** tab is where you edit the project's goal and add working rules — standing guidance your worker follows every time it picks the project back up. Upload files as project **resources** so reference material lives with the work. Your worker can use them, and you can download or remove them anytime. The **Conversations** tab links every chat connected to the project, so you can trace how the work has unfolded. You can manage projects entirely by chatting with your worker, entirely from the board, or any mix of the two — they always stay in sync. ## Project Membership, Invitations, & Activity Projects are collaborative. You can bring your entire team into any project to coordinate, track progress, and assign work. ### Inviting Members and Assigning Roles From the **Members** tab inside a project, you can manage your team roster: * **Invite by Email:** Click **Invite Member** and enter their email address to send a direct project invitation. * **Set Roles:** Assign roles such as project **Owner** or **Lead** to establish clear lines of responsibility. * **Roster Management:** View active members, check the status of pending invitations, or remove members from the project at any time. ### The Live Activity Feed To ensure everyone stays in sync, every project features a live **Activity Feed** that logs all changes in real time. It displays: * When a new member accepts their invitation and joins. * Any updates made to the project's goals or working rules in the **Overview** tab. * When a task card is moved on the Kanban board (e.g., from *To Do* to *Done*) and who moved it. *** ## Task Assignment & Multi-Worker Projects With multi-member projects, you can distribute tasks among both your human colleagues and your AI workforce. ### Direct Task Assignment Assign clear responsibilities to keep work moving: * **Assignees:** When creating or editing a task card on the board, use the assignee dropdown to assign it to any project member or assigned AI worker. * **Visual Accountability:** Task cards on the Kanban board display the assignee's avatar, making it easy to see who is responsible for each step at a glance. ### Multi-Worker Projects & Chat Picker For complex workflows, you can assign multiple specialized AI workers to a single project so they can work in parallel. * **Parallel Work:** Assign a researcher, a writer, and an editor worker to the same project to handle different stages of the goal. * **The Chat Picker:** When a project has more than one active worker, a worker selector (chat picker) appears at the top of the **Conversations** tab. Simply select the worker you want to chat with from the dropdown to start or resume a focused conversation with them. *** ## How Projects Stay Up to Date Your worker actively maintains the project as work happens: * **Tasks are added** when new work is identified * **Tasks are updated** when progress is made * **The summary is refreshed** to reflect the current state * **Notes capture decisions** so nothing important gets lost You can always ask: "What's the current status of \[project name]?" and get a clear, up-to-date picture. ## Completed Tasks and Projects When tasks are finished, they're marked as **Completed** — they're never deleted. This is intentional. Completed tasks and finished projects stay in your worker's history. You can always look back to see what was done, when, and why. It's your record of work — not a bin that gets emptied. This means you can: * **Review what happened** on a past project * **Refer back** to decisions or context from earlier work * **Audit progress** over time * **Reopen work** if a project needs to restart When all tasks in a project are done, the project itself is marked **Completed** and moves out of your active view — but it's always there when you need it. ## Viewing and Managing Projects You can ask your worker about projects at any time: * **"What projects are active right now?"** — Get a list of everything in progress * **"Give me a status update on \[project name]"** — See the current summary, tasks, and notes * **"What tasks are still open in \[project name]?"** — Focus on what's left to do * **"Show me completed projects"** — Browse past work for reference * **"Add a task to \[project name]"** — Update the project mid-stream * **"Mark \[task] as done"** — Record progress You can also ask your worker to prioritize tasks, add deadlines, or reorganize a project as circumstances change. ## Projects vs Skills Projects and skills are different tools for different kinds of work. | | Projects | Skills | | ---------------------- | -------------------------------- | ---------------------------- | | **Best for** | Ongoing, multi-step goals | Repeatable, procedural tasks | | **Duration** | Days, weeks, or longer | Minutes to hours | | **Changes each time?** | Yes — evolves as work progresses | No — same steps every time | | **Example** | Launching a new product | Processing weekly invoices | They can work together. A project might include a task that triggers a skill — for example, a client onboarding project where the "send welcome email" step uses a saved email skill. ## Next Steps Learn how workers save and reuse repeatable workflows Understand how your worker builds knowledge and context over time Get the most out of your worker by guiding their work Automate recurring work with schedules # Skills Source: https://docs.spinnable.ai/concepts/skills How workers learn and save reusable workflows ## What are Skills? Skills are **reusable workflows** that your workers learn and save. When a worker successfully handles a complex process, they can turn it into a skill — a packaged set of instructions and code they'll remember and execute reliably every time. Think of skills like training an employee on a specific procedure. Once they've learned it, they can do it consistently without you explaining the steps each time. Skills are sometimes called "Hard Skills" because they're concrete, learned capabilities — as opposed to general intelligence or conversational ability. ## When to Use Skills Skills are perfect for: * **Repeatable processes** — Tasks you do regularly with the same steps * **Company-specific workflows** — Procedures unique to your business * **Multi-step operations** — Complex tasks involving multiple tools or data transformations * **Quality-critical work** — Processes where consistency matters - Weekly sales report generation - Invoice processing workflow - Customer onboarding checklist - Data extraction and formatting * One-time tasks * Simple questions or lookups * Tasks that change every time * General conversation ## Real Example: Invoice Processing Here's how a skill might work in practice: **The process:** 1. Receive invoice PDF via email 2. Extract key data (vendor, amount, date, line items) 3. Format data into a structured format 4. Add row to Google Sheets tracking spreadsheet 5. Send confirmation to accounting team **Without a skill:** You'd explain these steps each time, and the worker might handle them slightly differently. **With a skill:** The worker saves this as "Invoice Processing" and executes it the same way every time — reliably, consistently, and without needing repeated instructions. ## How to Create a Skill Creating a skill is conversational. When your worker successfully completes a complex process: Work with your worker to handle the process. Make sure the output is what you want. Simply tell your worker: "Save this as a skill" or "Remember how to do this." Your worker will ask what to call the skill and confirm what it should do. Next time, just reference the skill: "Run the invoice processing skill" or "Process this invoice like we set up." **Pro tip:** After creating a skill, test it with a new example to make sure it works as expected. Provide feedback if anything needs adjustment. ## What's Saved in a Skill When a worker creates a skill, they save: | Component | What it includes | | --------------------- | ------------------------------------------------- | | **Instructions** | Step-by-step process documentation | | **Code** | Any scripts or transformations needed | | **Tool requirements** | Which tools the skill needs (Gmail, Sheets, etc.) | | **Examples** | Reference inputs and outputs | ## Skills and Worker Development Workers improve over time as they learn more skills. You can think of it like professional development: * **New workers** start with general capabilities * **Experienced workers** have built up a library of skills specific to your business * **Specialist workers** might have deep expertise in one area through many related skills Skills belong to individual workers. If you want multiple workers to have the same skill, you'll need to teach it to each one (or have one worker handle that specific process). ## Managing Skills To see what skills a worker has learned, you can ask them directly: * "What skills do you have?" * "Show me your skills" * "What processes have you learned?" Your worker will list their skills with descriptions of what each one does. ## Next Steps Understand the broader learning system Best practices for teaching your workers Organize workers around skills and roles Automate skill execution on a schedule # Tool Permissions Source: https://docs.spinnable.ai/concepts/tool-permissions Learn how to give your workers access to tools like Gmail, Google Calendar, Notion, and more ## Overview Giving your workers access to tools like Gmail, Notion, or Google Calendar works differently than traditional software. Think of it like onboarding a new employee: they need both **the right equipment** and **login credentials** to do their job. **Note:** Slack is configured as a communication channel by inviting your worker directly to your Slack workspace, rather than as a tool in Settings > Tools. See the [Communication Channels guide](/concepts/communication-channels#slack) for details. Spinnable uses a **two-level system**: 1. **Add the tool to your worker** — Like giving them access to the company's software suite 2. **Connect the tool** — Like providing them with login credentials so they can actually use it **A tool won't work unless both steps are complete.** Adding a tool without connecting it is like handing someone a laptop without the password — they can't actually use it. *** ## Understanding Tool States Here's what each state means for your worker: | State | What it means | Does it work? | | ----------------------------------- | -------------------------------------- | ------------- | | ❌ **Tool not added** | Worker doesn't have access to the tool | No | | ⚠️ **Tool added but not connected** | Worker has the tool but can't log in | No | | ✅ **Tool added + connected** | Worker can use the tool | Yes | *** ## Step 1: Add a Tool to Your Worker You can add tools to a worker in two ways: ### Option A: Through the Worker Settings 1. Go to your worker's page 2. Click **Tools** 3. Click **Add tool** 4. Select the tool(s) you need from the list 5. Click **Add** ### Option B: Ask Conversationally Just tell your worker what you need: > "Hey, I need you to manage my Gmail inbox. Can you add the Gmail tool?" Your worker will guide you through adding the necessary tools. **Quick tip:** If you're not sure which tools your worker needs, just describe what you want them to do. They'll suggest the right tools. *** ## Step 2: Connect the Tool After adding a tool, you'll need to **connect it** before your worker can use it. There are two ways to do this: ### Method 1: User-Level Connection (Recommended for Most Users) **How it works:** Connect a tool once in your personal User Tools, then any worker can use your account when needed. **When to use this:** * You want simple, one-time setup * You're comfortable with workers using your personal accounts * You don't need separate accounts for different workers **Steps:** 1. Click your **email address** 2. Click **Tools** (you'll see tools connected at user level, and each worker and their tools) 3. Click **Add tools**, select the tool(s) you want, then click **Connect** to authenticate with your account 4. Go back to your worker's page → **Tools** 5. Click **Connect** on the tool 6. Select **"Use user account"** from the dropdown **Important:** Even though you connected the tool in User Tools, you still need to explicitly select "user account" when connecting it to your worker. It doesn't happen automatically. **Pros:** * ✅ Set it up once, use it for all workers * ✅ Quick and easy * ✅ No need to manage multiple accounts **Cons:** * ⚠️ Workers have all the permissions your personal account has * ⚠️ Actions appear as you (emails sent, calendar events created, etc.) * ⚠️ Less secure if you need strict access control *** ### Method 2: Worker-Specific Connection (Recommended for Teams & Sensitive Data) **How it works:** Connect each tool with a separate account specifically for that worker. **When to use this:** * You need different workers to use different accounts (e.g., Worker A uses GitHub account 1, Worker B uses GitHub account 2) * You want better security and access control * You want actions to appear under a specific account (not your personal account) * You're managing tools with sensitive data **Steps:** 1. Go to your worker's page → **Tools** 2. Click **Connect** on the tool you want to connect 3. Authenticate with a **separate account** (you'll typically be redirected to the tool's login page or asked for an API key depending on the tool) 4. The tool is now connected specifically to this worker **Pros:** * ✅ More secure — control permissions at the tool level * ✅ Different workers can use different accounts for the same tool * ✅ Actions appear under the worker's account, not yours * ✅ Better audit trail and accountability **Cons:** * ⚠️ Requires setting up separate accounts for each worker that needs the tool * ⚠️ More setup time *** ## Tools with Granular Access Controls Some tools are split into **multiple versions** to give you precise control over what your workers can do. These are clearly labeled in the tool title. ### Examples: * **Gmail (read)** — Worker can read emails but not send them * **Gmail (send)** — Worker can send emails on your behalf * **Outlook (read)** — Worker can read emails but not send them * **Outlook (send)** — Worker can send emails on your behalf **Why this matters:** If you only want your worker to monitor your inbox and flag important emails, add **Gmail (read)** only. If you want them to draft and send responses, add both **Gmail (read)** and **Gmail (send)**. You can add one or both depending on your needs. Just remember: **each tool needs to be connected separately**, even if they're for the same service. *** ## Common Scenarios & Mistakes ### ❌ "I connected Gmail but my worker can't send emails" **What happened:** You likely added and connected **Gmail (read)** but not **Gmail (send)**. **Solution:** Go to your worker's Tools page, add **Gmail (send)**, and connect it. *** ### ❌ "I connected Gmail in User Tools, but my worker says they still can't access it" **What happened:** You connected it at the user level, but you didn't select "user account" when connecting the tool to your worker. **Solution:** 1. Go to your worker → **Tools** 2. Click **Connect** next to Gmail 3. Select **"Use user account"** from the dropdown *** ### ❌ "My worker did something with my Gmail, but I wanted them to use a different account" **What happened:** You used the user-level connection method, which gives workers access to your personal account. **Solution:** 1. Go to your worker → **Tools** 2. Click **Disconnect** on the tool 3. Click **Connect** again 4. This time, authenticate with a separate account instead of selecting "user account" *** ### ❌ "I added a tool but it's not showing up" **What happened:** Adding a tool can take a moment to process. **Solution:** Refresh the page. If it still doesn't appear, try adding the tool again or reach out to support. *** ## Available Tools Spinnable supports 35+ integrations across communication, productivity, development, and specialized tools. See the complete list of available tools and integrations → The full list of available tools is always growing. You can also see all current integrations by going to any worker's page → **Tools** → **Add tool**. *** ## Important Security Notes **Workers have whatever permissions the connected account has.** If you connect your personal Gmail account, your worker can do anything you can do with Gmail (within the scope of the specific tool — read vs. send). ### Best Practices: 1. **Use worker-specific accounts for sensitive tools** — Consider creating dedicated accounts for workers that handle financial data, customer information, or other sensitive materials. 2. **Use granular tools when available** — If you only need a worker to read emails, don't give them send permissions. 3. **Review connected tools regularly** — Go to your worker's Tools page periodically to make sure they only have access to what they need. 4. **Disconnect tools when no longer needed** — If a worker's role changes, remove tools they no longer use. *** ## Quick Reference: Which Connection Method Should I Use? | Scenario | Recommended Method | | ----------------------------------------------------------- | -------------------------- | | Single worker, personal use | User-level connection | | Multiple workers, same account for all | User-level connection | | Different workers need different accounts for the same tool | Worker-specific connection | | Handling sensitive data or customer information | Worker-specific connection | | Need actions to appear under a specific account (not yours) | Worker-specific connection | | Want maximum security and control | Worker-specific connection | *** ## Need Help? If you're stuck or unsure which approach to use, just ask your worker conversationally: > "I want you to access my Gmail, but I'm not sure how to set that up. Can you walk me through it?" Your worker can guide you through the process step-by-step. # Voice Calls Source: https://docs.spinnable.ai/concepts/voice-calls Talk to your workers by voice for real-time collaboration Talk to your workers by voice for real-time, hands-free collaboration. Voice calls are available for any worker—just click the **Call** button on their page to start talking. **Beta Feature**: Voice calls are currently in beta. Workers can access tools and get work done during calls, but they're slightly less reliable than when working through text. ## How It Works Starting a voice call is simple: 1. Open any worker's page 2. Click the **Call** button 3. Start talking—your worker listens and responds by voice **Cancelling while connecting:** If a call takes longer than expected to connect or was started by mistake, you can hang up or cancel directly while the connection is still establishing to prevent stuck call states. During calls, workers can: * Access all their connected tools * Execute tasks in real-time * Remember the conversation context * Take actions based on your voice instructions ## Call Controls & Status Indicators Manage your live voice sessions using the call control bar: * **Microphone Mute Control:** Mute and unmute your microphone at any time using the call control toggle. Muting pauses audio input at the source so side conversations won't trigger unwanted worker turns, while clear status indicators keep you informed of your current microphone state. * **Voice Call Readiness & Turn Status:** Call controls accurately report active turn status (showing when your worker is listening or actively responding) instead of remaining on "Ringing...", and a pre-call notice explains brief setup delays before a worker's initial call. ## When to Use Voice Voice calls work best for: * **Complex discussions** that benefit from back-and-forth dialogue * **Hands-free work** when you're multitasking or away from keyboard * **Brainstorming sessions** where you need to think out loud * **Quick questions** that don't require written records For detailed instructions, documentation, or when precision matters most, text-based channels (chat, email, WhatsApp) may be more reliable. ## Best Practices For detailed or critical work, use text channels first. Voice is great for follow-up questions and clarifications. Voice recognition works best with clear speech. Pause between thoughts to help your worker process what you're saying. Since voice is in beta, confirm critical information in writing after the call. # Setting Up Tools Source: https://docs.spinnable.ai/getting-started/setting-up-tools Give your workers access to the tools they need to get work done Your workers need the right tools to do their jobs. Just like you wouldn't hire someone and then lock them out of your email system, your AI workers need access to the apps and services they'll use every day. Here's what you need to know about how tool access works at Spinnable. ## Understanding Tool Permissions For workers to use a tool they need two things: 1. To have the tool (think of it like installing a tool on the computer) 2. An account connected to the tool To connect the account they can either use your account, or use their own account (if you have created one). **Note:** Slack is set up as a communication channel by inviting your worker directly to your Slack workspace, rather than through Settings > Tools. Learn more in the [Communication Channels guide](/concepts/communication-channels#slack). Want to understand how this two-level system works in detail? Check out our [Tool Permissions](/concepts/tool-permissions) guide. Want to see all available tools? Browse our complete [Tools & Integrations](/tools/overview) directory. ## Setting Up Your Tools Navigate to **Tools** in the left sidebar. This is where you connect your account's tools and services to Spinnable. Click **Connect** next to any tool you want to make available. You'll authenticate with the service and grant Spinnable the necessary permissions. This step makes tools *available* to your workers — but doesn't give them access yet. Open the worker and click **Tools** in the right floating sidebar. You'll see all the tools you've connected at the account level. Toggle on the tools this specific worker should be able to use. Different workers can have access to different tools based on their role. Ask your worker to perform a simple task using the tool. For example: "Can you check my calendar for tomorrow?" or "Send a test email to myself." This confirms the worker has the access they need and knows how to use the tool. ## Connection Status After connecting a tool in **Tools**, each connection displays a color-coded status indicator. Understanding these statuses is important — **only active connections allow your workers to use the tool.** | Status | Indicator | Meaning | | ----------- | --------- | ----------------------------------------------------------------------------------------------------------------------------- | | **Active** | 🟢 Green | The connection is live and fully functional. Workers with this tool enabled can use it immediately. | | **Pending** | 🟡 Yellow | The connection was started but is not yet complete. The tool **cannot** be used by workers in this state. | | **Failed** | 🔴 Red | The connection encountered an error (e.g., expired token, revoked permissions). The tool is non-functional until reconnected. | **Pending (yellow) connections are non-functional.** If all your tool connections are stuck in "pending" status, your workers will not be able to use any tools — even if those tools are enabled in the worker's settings. This is one of the most common setup issues. ### Resolving a Pending Connection If a connection shows as 🟡 **Pending**, follow these steps: Go to **Tools** in the left sidebar and locate the tool with the pending status. Click **Disconnect** next to the pending connection to remove the incomplete setup. Click **Connect** again and complete the full authentication flow. Make sure to: * Allow all requested permissions in the OAuth prompt * Complete the process within 5 minutes (authorization tokens can time out) * Avoid closing the browser tab or pop-up before the flow finishes After reconnecting, confirm the indicator changes to 🟢 **Active**. If it stays yellow or turns red, see the [Troubleshooting](/troubleshooting) page. **Before assigning tools to workers**, visit **Tools** in the left sidebar and verify that every connection you plan to use shows a 🟢 green (Active) status. This quick check prevents the most common "my worker can't use the tool" issues. ## Best Practices Always connect tools in **Tools** (left sidebar) **before** configuring worker access. This ensures smooth setup and prevents workers from requesting tools mid-task. **Why this matters:** If a worker needs a tool that isn't connected, they'll have to ask you to add it, interrupting their workflow. Begin by connecting only the tools your workers need immediately. You can always add more later as requirements evolve. **Recommended starting tools:** * Email (Gmail or Outlook) for communication * Calendar for scheduling * One productivity tool (Notion, Google Drive, or Trello) Avoid tool overload — workers perform better with focused, relevant access. Match tool access to each worker's specific responsibilities rather than giving everyone access to everything. **Example:** * **Marketing worker:** Email, social media tools, analytics * **Operations worker:** Calendar, project management, spreadsheets * **Technical worker:** Code repositories, documentation tools This specialization helps workers stay focused and reduces confusion. As your workers' responsibilities evolve, audit their tool access monthly to ensure: * They have access to everything they need * They're not cluttered with unnecessary tools * Permissions align with current tasks Think of this like managing access for human employees — it should grow with their role. After connecting a tool and granting worker access, verify it works by: 1. Asking the worker to perform a simple task with the tool 2. Checking that the worker can both read and write (if applicable) 3. Confirming any automated workflows trigger correctly **Quick test example:** "Can you draft an email to [test@example.com](mailto:test@example.com) using Gmail?" ## Troubleshooting **Most common cause:** The tool is connected to your account but not granted to that specific worker. **Solution:** 1. Open the worker 2. Click **Tools** in the right floating sidebar 3. Enable the tool for that worker 4. Save changes **Remember:** Connecting a tool in **Tools** doesn't automatically give workers access. You must explicitly grant it per worker. **Common causes and solutions:** * **Authentication expired:** Re-authorize the tool in **Tools** (left sidebar) * **Insufficient permissions:** Check that you granted all required permissions during OAuth * **Third-party restrictions:** Some organizations block third-party app access — contact your IT admin **Still stuck?** Disconnect and reconnect the tool from scratch: 1. Go to **Tools** in the left sidebar 2. Click disconnect next to the tool 3. Follow the connection steps again Workers learn and adapt through conversational feedback, just like human employees. **Solution approach:** * Give clear, specific feedback: *"When sending emails, please keep them to 3-4 bullet points"* * The worker will memorize this preference and adjust behavior * You can review what they've learned in **Workers** → **Knowledge** section Don't over-configure in settings. Instead, guide workers conversationally — they'll adapt and improve over time. **To remove a worker's access to a tool:** 1. Open the worker 2. Click **Tools** in the right floating sidebar 3. Toggle off the tool you want to revoke 4. Confirm the change The worker will immediately lose access. They'll let you know if they need it back for a specific task. **Diagnostic steps:** 1. **Check tool status:** Go to **Tools** in the left sidebar — look for warning icons 2. **Verify API limits:** Some tools have rate limits that may be exceeded 3. **Review permissions:** Ensure the connected account has necessary privileges 4. **Test manually:** Try using the tool yourself to confirm it's operational If all checks pass but issues persist, disconnect and reconnect the tool. ## Next Steps Learn how to grant and manage tool permissions for individual workers Understand the two-level permission system and common access patterns Explore best practices for organizing and scaling your AI workforce Master conversational feedback to improve worker performance *** # Ideas for Your AI Team Source: https://docs.spinnable.ai/getting-started/worker-ideas Real examples of how businesses use Spinnable AI workers to save time, automate workflows, and scale operations. Looking for inspiration? Here are real use cases from businesses already using Spinnable — from solo founders to growing teams. Each one started with a simple conversation with Bob, our hiring manager. Most users start with an **Executive Assistant** and expand to specialists as they discover new possibilities. You don't need to plan everything upfront — just start with what's costing you the most time. *** ## Executive Assistant & Daily Briefings **The most popular starting point.** Hire an AI worker as your personal chief of staff who manages your calendar, triages your inbox, and sends you daily briefings. **What it looks like in practice:** * Morning WhatsApp message at 8am with today's meetings, pending emails, and top priorities — pulled from Google Calendar, Gmail, and Notion * Evening recap of what happened today plus tomorrow's prep * Proactive inbox monitoring that flags urgent emails and drafts replies to routine ones * Meeting scheduling across multiple time zones, sending availability and confirming slots automatically **Popular tools:** Gmail, Google Calendar, Notion, WhatsApp *** ## Sales Operations & CRM Automation **Eliminate hours of manual data entry.** AI workers process sales data, generate reports, and manage CRM workflows so your team can focus on selling. **What it looks like in practice:** * Process weekly sales receipts: read PDF invoices, extract key data, update a Google Sheets tracker, and generate a formatted summary * On-demand CRM summaries — ask "give me a summary of Account X" and get a structured overview of activity, pipeline, and key contacts * Draft outreach emails to prospects, track responses, and maintain a sales pipeline in Notion * Monitor email for deal notifications and immediately alert the team **Popular tools:** Salesforce, Google Sheets, Gmail, Notion, HubSpot *** ## Industry Intelligence & Research **Stay current without spending hours reading.** Specialized research workers monitor your industry, curate relevant news, and deliver structured briefings. **What it looks like in practice:** * Weekly intelligence briefings on emerging startups, new technologies, and market trends in your sector * A dedicated "Startup Scout" that tracks early-stage companies in your space with curated weekly reports * Daily industry press digest with summaries and relevance commentary * Competitor monitoring and trend analysis that feeds into content ideas **Popular tools:** Gmail, Notion, Web Research *** ## Content Creation & Social Media **Consistent content without the blank page problem.** AI workers draft LinkedIn posts, newsletters, and thought leadership pieces in your voice. **What it looks like in practice:** * LinkedIn posts drafted from trending topics in your industry, calibrated to match your writing tone * Meeting notes and conference takeaways turned into polished social media content * Weekly newsletter assembled from curated articles with summaries and formatting * Research notes transformed into thought leadership pieces **Popular tools:** LinkedIn, Gmail, Notion *** ## Customer Support Inbox Management **Faster response times, less manual triage.** AI workers monitor support inboxes, categorize requests, and draft initial responses. **What it looks like in practice:** * Monitor customer support inbox and categorize messages by urgency and type * Draft suggested responses for the support team to review and send — in any language * Create summaries of pending requests every few hours so nothing falls through the cracks * Route complex issues to the right team member automatically **Popular tools:** Gmail, Slack, Notion *** ## Automated Monitoring & Smart Alerts **Set it and forget it.** Configure your AI worker to continuously monitor channels and send proactive alerts when something important happens. **What it looks like in practice:** * Scan your inbox every 6 hours and send a WhatsApp alert only for truly urgent messages — stay off email during focused work * Weekly automated reports pulling analytics data every Monday morning * Monitor specific notifications and immediately alert your team via WhatsApp * School calendar monitoring with WhatsApp reminders (yes, even for your kids' homework!) **Popular tools:** Gmail, WhatsApp, Google Analytics *** ## Short-Term Rental & Property Management **Handle high-volume guest communication at scale.** AI workers manage guest messaging, coordinate operations, and even assess booking risks. **What it looks like in practice:** * Handle guest communication across multiple properties — check-in questions, local recommendations, cleaning coordination * Analyze guest profiles and booking patterns to predict potential issues before they happen * Coordinate between property platforms and operational staff with automated schedules and maintenance alerts **Popular tools:** Guesty, Beds24, Gmail, WhatsApp *** ## Financial Analysis & Investment Research **Systematic document analysis at scale.** AI workers analyze reports, track investments, and catch patterns humans might miss. **What it looks like in practice:** * Analyze construction progress reports and flag potential delays from contractor language patterns * Track property investments, tax deadlines, and financial documents across multiple countries * Compile deal research, analyze pitch decks, and prepare investment briefings **Popular tools:** Gmail, Google Sheets, Google Drive, Notion *** ## HR & Internal Operations **Automate the admin your team dreads.** AI workers manage HR tools, process requests, and handle internal workflows with zero customer-facing risk. **What it looks like in practice:** * Process vacation requests — log in Notion, notify the manager on Slack, update the team calendar * Query employee data and route approvals through your existing tools * Maintain a project database, send weekly status updates, and flag overdue tasks **Popular tools:** Notion, Slack, Google Calendar, Factorial *** ## Education & Specialized Research **Deep research without the deep time investment.** Perfect for consultants, academics, and professionals who need synthesis and analysis. **What it looks like in practice:** * Research best practices, competitive analysis, and curriculum development insights for education programs * Analyze mystery shopping reports across locations — identify patterns, score performance, generate recommendations * Process health questionnaires, generate personalized assessments, and track client progress * Cross-reference texts, analyze structures, and prepare study materials **Popular tools:** Gmail, Google Docs, Notion, Web Research *** ## Patterns from Power Users As you grow your AI team, here are patterns we see from the most successful users: Begin with a general Executive Assistant, then hire specialists for specific domains like research, sales, or content. The most engaged users receive daily briefings and alerts via WhatsApp — it feels more immediate than email. Daily briefings, weekly reports, and inbox monitoring become part of your routine. Set it up once and let your worker handle it. AI workers adapt to your language seamlessly — users operate in Portuguese, English, Finnish, Spanish, and more. *** Start with whatever's costing you the most time. Bob will help you set everything up in about 30 seconds. # Autonomous Web Scraping Source: https://docs.spinnable.ai/guides/autonomous-web-scraping Access and automate websites that don't have an API — using direct HTTP requests and programmatic CAPTCHA solving ## What This Guide Covers Some websites your business relies on don't offer APIs — government portals, legacy business directories, industry registries, or internal tools with web-only interfaces. Your team might spend hours manually searching these sites, filling in forms, and copying results. This guide introduces a technique your AI worker can use to **access these websites programmatically** — without opening a browser. Instead of automating clicks in a visual browser, the worker talks directly to the website's server using HTTP requests. **This is an advanced, experimental technique.** It may or may not work depending on the target website. Websites change their protections and structure without notice, and there's no guarantee of ongoing compatibility. This guide is a suggestion for making certain websites more accessible to your AI workers — not a supported, guaranteed integration. *** ## For You: Understanding the Value ### What problem does this solve? When a website has no API, the traditional options are: * **Manual work** — someone on your team does the lookups by hand * **Browser automation** — your AI workers tries to use the browser Browser automation is heavy, slow, resource-intensive, and fragile. It breaks when websites update their layout, and it struggles with CAPTCHAs and anti-bot protections. The approach in this guide is **fundamentally different**: your worker reverse-engineers how the website works under the hood and communicates directly with the server. Think of it as learning to speak the website's language rather than pretending to be a human clicking buttons. ### When should you consider this? * Repetitive lookups or searches on a specific website (e.g., checking a business registry daily) * Data extraction from form-based portals (e.g., government databases, legal publications) * Monitoring pages for changes or new entries * Any task where your team currently fills in web forms manually and copies results ### What does your worker need? 1. **A CAPTCHA solving service API key** — services like [2Captcha](https://2captcha.com) solve CAPTCHAs programmatically for approximately \$0.003 per solve. Store this key in your [Worker Vault](/guides/worker-vault). 2. **Your guidance on the target** — tell your worker which website to target and what data you need extracted. 3. **Time for reconnaissance** — your worker will need to inspect the website first to understand its structure before automating it. ### What to expect * **First-time setup** takes effort — your worker needs to reverse-engineer each specific website (but they'll do the heavy lifting) * **Once working**, the process is fast and reliable (until the website changes) * **Save it as a skill** — once your worker cracks a specific site, ask them to save the workflow as a reusable skill ### Ethical guidelines * Only scrape **publicly accessible data** that is meant to be viewed by anyone * Respect the website's terms of service and `robots.txt` * Implement **rate limiting** — don't overwhelm target servers with rapid-fire requests * Use this for **legitimate business purposes** only Using third-party CAPTCHA solving services operates in a legal gray area in some jurisdictions. Ensure your use case is legitimate and permissible in your region before proceeding. *** ## For Your AI Worker: Technical Methodology **AI Worker Reference** — This section is a technical guide designed for AI workers to learn the autonomous web scraping methodology. It covers the full pattern from reconnaissance to result parsing. ### The "Package 2" Pattern This methodology uses **direct HTTP requests** (via libraries like `requests` or `httpx`) combined with a third-party CAPTCHA solving service. There is no browser involved — no Selenium, no Playwright, no headless Chrome. You communicate directly with the web server. **Advantages over browser automation:** * Drastically faster execution * Minimal memory/resource usage * No browser driver version mismatches * Scales easily for high-concurrency workloads * No UI rendering context to manage *** ### Phase 1: Reconnaissance — Understanding the Target Before writing any code, inspect the website's architecture and understand its request flow. **Step 1: Observe the Request Flow** * Open the browser's Developer Tools (F12), navigate to the Network tab * Ensure "Preserve log" is checked * Submit the form manually and observe the initial `GET` request and subsequent `POST` request * Note the request URL, headers, and payload structure **Step 2: Identify the Tech Stack** * Look at URLs and page source for clues: * `.aspx` extensions and `WebResource.axd` paths → **ASP.NET WebForms** * `.php` extensions → **PHP** * JSON API calls in the background → **JavaScript SPA with API backend** * ASP.NET WebForms is particularly common in government/enterprise portals and maintains state via hidden fields: `__VIEWSTATE`, `__EVENTVALIDATION`, `__VIEWSTATEGENERATOR` **Step 3: Identify Anti-Bot Protections** * **reCAPTCHA:** Look for iframes loading from `google.com/recaptcha` or `grecaptcha` elements * **JavaScript Challenges:** Look for inline scripts evaluating math expressions or string manipulations (e.g., NoBot controls that embed expressions like `eval('43+40')`) * **Rate Limits:** Note if there are strict rate limits or IP blocking behaviors **Step 4: Map the Form Fields** * Use the Elements tab to inspect the `
` * Note the `name` attributes of all `` elements * For ASP.NET WebForms, inputs inside server controls often use `$` separators (e.g., `ctl00$ContentPlaceHolder$txtSearchField`) *** ### Phase 2: Replaying the Request Flow Your script must replicate exactly what the browser does, step by step. **Step 1: Establish Session and Extract State** ```python theme={null} import requests from bs4 import BeautifulSoup # Use Session to automatically persist cookies between GET and POST session = requests.Session() session.headers.update({ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" }) # GET the page to establish session and extract hidden state resp = session.get(TARGET_URL) soup = BeautifulSoup(resp.text, "html.parser") # Extract ASP.NET hidden state fields viewstate = soup.find("input", {"name": "__VIEWSTATE"})["value"] event_validation = soup.find("input", {"name": "__EVENTVALIDATION"})["value"] viewstate_gen = soup.find("input", {"name": "__VIEWSTATEGENERATOR"})["value"] ``` **Step 2: Handle Server-Side JavaScript Challenges** Many sites use JavaScript challenges to block simple bots. You must solve these server-side. ```python theme={null} import re # Decode Unicode escapes FIRST (e.g., \u0027 -> ') page_decoded = resp.text.encode().decode('unicode_escape') # Extract math expression from patterns like eval('43+40') match = re.search(r"eval\('(\d+[+\-*/]\d+)'\)", page_decoded) if match: expression = match.group(1) # Strip leading zeros to avoid Python syntax errors # (Python 3 treats leading zeros as invalid octal literals) clean_expression = re.sub(r'\b0+(\d)', r'\1', expression) challenge_answer = str(eval(clean_expression)) ``` **Critical pitfalls:** * **Unicode escape sequences:** HTML source may contain `\u0027` instead of `'`. Always decode Unicode escapes before parsing with regex. * **Leading zeros:** Expressions like `0275+85` will fail in Python's `eval()`. Strip leading zeros first using `re.sub(r'\b0+(\d)', r'\1', expression)`. *** ### Phase 3: Solving CAPTCHAs Programmatically For sites protected by reCAPTCHA v2, use a CAPTCHA solving service (e.g., 2Captcha). **The concept:** You don't solve the CAPTCHA visually. Instead, you extract the site key, send it to a solving API, and receive a bypass token. **Step-by-step API flow:** ```python theme={null} import time def solve_recaptcha(api_key, site_key, page_url): # 1. Submit the task to 2Captcha resp = requests.post("https://2captcha.com/in.php", data={ "key": api_key, "method": "userrecaptcha", "googlekey": site_key, "pageurl": page_url, }) if "|" not in resp.text: raise Exception(f"Failed to submit captcha: {resp.text}") task_id = resp.text.split("|")[1] # 2. Poll for completion every 5 seconds while True: time.sleep(5) resp = requests.get( f"https://2captcha.com/res.php?key={api_key}&action=get&id={task_id}" ) if resp.text != "CAPCHA_NOT_READY": if "OK|" in resp.text: return resp.text.split("|")[1] # The token else: raise Exception(f"Captcha solve failed: {resp.text}") ``` **Finding the site key:** * Look for `data-sitekey` attribute in the HTML * Or find it inside a `grecaptcha.render()` function call **Important notes:** * The CAPTCHA token must be submitted within the **same session** (matching cookies) that loaded the page * Typical solve time: 15-30 seconds * Cost: \~\$0.003 per solve * Alternative services (Anti-Captcha, CapSolver) follow the same architectural pattern *** ### Phase 4: Assembling & Submitting the Request Combine the state, solved challenge, CAPTCHA token, and search parameters into a single `POST` payload: ```python theme={null} payload = { # ASP.NET hidden state "__VIEWSTATE": viewstate, "__EVENTVALIDATION": event_validation, "__VIEWSTATEGENERATOR": viewstate_gen, # Search parameters (field names from reconnaissance) "ctl00$ContentPlaceHolder$txtSearchField": search_term, # Submit button name/value pair "ctl00$ContentPlaceHolder$btnSearch": "Search", # Solved JavaScript challenge "NoBotControl$NoBotExtender_ClientState": challenge_answer, # CAPTCHA token "g-recaptcha-response": captcha_token, } # POST to the same URL (ASP.NET WebForms posts back to itself) result = session.post(TARGET_URL, data=payload) ``` **Key details:** * Set a legitimate `User-Agent` header and correct `Content-Type` * Include the submit button's name-value pair (often overlooked) * ASP.NET WebForms always posts back to the same URL *** ### Phase 5: Parsing Results Extract structured data from the response HTML: ```python theme={null} soup = BeautifulSoup(result.text, "html.parser") # Locate the results table (ASP.NET GridView components have specific IDs) table = soup.find("table", {"id": "ctl00_ContentPlaceHolder_gvResults"}) if table: rows = table.find_all("tr")[1:] # Skip header row results = [] for row in rows: cells = row.find_all("td") results.append({ "column_1": cells[0].text.strip(), "column_2": cells[1].text.strip(), # ... map to meaningful field names }) ``` **Pagination:** For ASP.NET, pagination uses `__EVENTTARGET` and `__EVENTARGUMENT` hidden fields. To navigate to page 2, populate these fields and make another POST request simulating the page link click. *** ### Common Pitfalls & Debugging | Issue | Symptom | Fix | | --------------------- | ----------------------------------------------- | ---------------------------------------------------------- | | Unicode escapes in JS | Regex fails to match expressions | `.encode().decode('unicode_escape')` before parsing | | Leading zeros in math | `eval('04+2')` throws SyntaxError | Strip leading zeros via `re.sub(r'\b0+(\d)', r'\1', expr)` | | Session mismatch | CAPTCHA solved but form rejected | Use `requests.Session()` for all requests | | ViewState expiry | Form rejected after long CAPTCHA solve (>5 min) | Retry with fresh GET if CAPTCHA takes too long | | Missing submit button | ASP.NET Event Validation error | Include the submit button's name-value pair in payload | | Missing hidden field | Server returns validation error | Check all hidden inputs from the form, not just ViewState | *** ### Turning This Into a Skill Once you've successfully automated a specific website: 1. **Test it reliably** — run the process multiple times to confirm stability 2. **Save it as a skill** — this ensures you can repeat the workflow without re-engineering the site each time 3. **Add error handling** — websites change; build in graceful failure and retry logic 4. **Implement rate limiting** — add `time.sleep()` between requests to avoid overwhelming the target server *** ## Related Connect tools that have APIs but no native Spinnable integration Store API keys and credentials securely Save repeatable workflows for reuse Keep your worker integrations secure # Change Worker Manager Source: https://docs.spinnable.ai/guides/change-manager Change a worker's manager to pass responsibility to another user while preserving memory, chats, and skills ## Overview Changing a worker's manager transfers responsibility for an AI worker to another Spinnable user. The new manager assumes full administrative control — including configuration, tool connections, and billing — while all of the worker's accumulated memory, learned context, knowledge base, skills, and chat history carry over intact. **Shared team workers stay connected.** If a worker belongs to a team, it remains visible to team members after changing its manager — only administrative management and billing transfer. *** ## Prerequisites & Eligibility Before changing a worker's manager, verify the following: * **Active Subscription Required**: Changing a worker's manager requires an active paid subscription for the current manager. This feature is unavailable during trial periods or on inactive subscriptions. * **Manager-Only Permission**: Only a worker's primary manager can initiate a manager change. Co-managers cannot transfer or reassign a worker. * **Existing Account**: The recipient must already have an active Spinnable account and an active subscription. * **One Invite at a Time**: Only one manager change invitation can be pending per worker at any given time. * **Self-Transfer**: You cannot initiate a manager change to your own email address. *** ## Initiating a Manager Change To transfer management of a worker to another user: Open the worker you wish to transfer and click the **Settings** tab (gear icon). Scroll to the bottom of the Settings page to find the **Danger Zone** section. Under **Change manager** ("Choose another Spinnable user to manage ``. You'll lose access as their manager."), click **Change manager**. In the **Transfer to another manager** modal: * Review what transfers and what is removed upon acceptance. * Enter the recipient's email address in the **New manager's email** field. * Click **Transfer Worker**. A toast notification confirms: **"Transfer invite sent."** *** ## What Transfers vs. What Is Removed When the invited manager accepts the invitation, the following access and configuration rules apply: | Scope | What Happens | | :----------------------------- | :------------------------------------------------------------------------------------------------------------------------- | | **Transferred to New Manager** | All memories, chats, learned context, knowledge base, settings, profile information, team assignments, and scheduled tasks | | **Removed Upon Acceptance** | All co-manager assignments, tool connection assignments, and vault entries stored for the worker | **Tool connections and vault secrets are cleared for privacy and security.** The new manager must reconnect required tools (e.g., Gmail, Slack) and re-enter any required vault entries after accepting the transfer. *** ## Pending Invitations & Cancellation While an invitation is pending: * **Current Manager View**: Under **Change manager** in Settings, the status displays **Future manager** (`PENDING INVITEE`) with the recipient's name and email, along with the notice: `" must accept to complete the transfer."` * **Cancelling an Invite**: The current manager can click **Cancel invite** in the Danger Zone at any time before acceptance. A toast confirms: **"Transfer invite cancelled."** *** ## Invited Manager View & Accepting / Declining When you receive a manager change invitation: ### Viewing the Invitation A **Pending Worker Transfer** card appears at the top of your **Workers** list page showing the worker's name, default job title (`AI Worker`), and who sent the invite (`From `). ### Declining the Transfer 1. Click **Decline** on the transfer card. 2. In the confirmation dialog ("If you decline, you will not manage ``; `` remains their manager."), click **Decline invite**. 3. A toast confirms: **"Transfer invite declined."** The current manager retains full control of the worker. ### Accepting the Transfer 1. Click **Accept** on the transfer card. 2. Review the **Become ``'s manager?** confirmation dialog: * **Billing Note**: Usage counts toward your plan limits and subscription upon acceptance. * **Privacy & Tool Note**: Tool connections, co-managers, and vault entries are cleared upon acceptance. 3. Click **Accept transfer**. *** ## Post-Change Access & Plan Limits Once the transfer is accepted: * **Confirmation & Redirect**: You are immediately redirected to the worker page. * **Active Worker Limit Checks**: * If accepting the worker stays within your plan's active worker limit, a toast confirms: **"You are now this worker's manager."** * If your active worker limit is already reached, a toast notifies you: **"You accepted the transfer. This worker is on holiday because your plan's active worker limit was reached."** The worker status is automatically set to inactive ("on holiday") until capacity is freed or your plan is upgraded. * **Access Changes**: * **Previous Manager**: Loses manager access. The worker is removed from their workspace roster (unless shared via a team where they remain a team member). * **New Manager**: Gains full manager control and billing responsibility for the worker. # Co-Managers Source: https://docs.spinnable.ai/guides/co-managers Share management access to a worker with trusted colleagues ## What Are Co-Managers? Co-Managers let you give trusted colleagues **manager-level access** to your worker — without giving up primary management control. Think of it like adding a second keyholder: they can configure the worker, connect their own tools, and manage knowledge, but you stay in control. This is useful when: * Multiple people on your team need to configure and maintain the same worker * You want a colleague to connect their own tool accounts (e.g., their Gmail or calendar) to a shared worker * You're going on vacation and need someone to manage your worker while you're away Co-Managers is available on **Standard** and **Premium** plans. Both the primary manager and each co-manager must have their own active **Standard** or **Premium** plan. You can add up to 2 co-managers per worker. ## Co-Manager vs. Team Member These are different levels of access: | | Team Member | Co-Manager | Primary Manager | | ----------------------------- | ----------- | ------------------------------ | --------------- | | Talk to the worker | ✅ | ✅ | ✅ | | View worker in team directory | ✅ | ✅ | ✅ | | Change worker settings | ❌ | ✅ | ✅ | | Connect their own tools | ❌ | ✅ | ✅ | | Manage worker knowledge | ❌ | ✅ | ✅ | | Add/remove co-managers | ❌ | ❌ | ✅ | | Fire the worker | ❌ | ❌ | ✅ | | Change worker manager | ❌ | ❌ | ✅ | | Remove worker from teams | ❌ | Only from teams they belong to | Any team | **Team members** can interact with a shared worker but can't change how it works. **Co-Managers** can configure the worker almost like the primary manager — except they can't fire it, manage other co-managers, change the worker's manager, or remove it from teams they don't belong to. **Need to permanently transfer a worker to another manager?** Use [Change Worker Manager](/guides/change-manager) to hand off full management responsibility and billing to another user while preserving the worker's memory, chats, and skills. ## Adding a Co-Manager Only the worker's primary manager can add co-managers. 1. Open the worker you want to share management of 2. Scroll to the **Co-Managers** section 3. Click **Add co-manager** 4. Enter the worker or the email address of the person you want to add 5. Click **Send invitation** The person must already have their own active **Standard** or **Premium** plan. Once added, they'll receive an email notification and immediately get manager-level access. You cannot add yourself as a co-manager — you're already the primary manager. ## Removing a Co-Manager **As the primary manager:** You can remove any co-manager at any time from the Co-Managers section. **As a co-manager:** You can remove yourself by clicking "Leave co-manager role" — but you cannot remove other co-managers. When a co-manager is removed: * Their tool accounts connected to that worker are **automatically unassigned** * They lose all manager-level access (settings, tools, knowledge) * Only the primary manager can re-add them ## What Co-Managers Can Do Once added, a co-manager has nearly the same configuration access as the primary manager: ✅ **Configure the worker** — Update settings, job policy, and behavior\ ✅ **Connect their own tools** — Link their Gmail, calendar, Slack, or any integration\ ✅ **Connect and disconnect email mailboxes** — Co-managers can connect and disconnect email mailboxes for workers they co-manage\ ✅ **Manage knowledge** — Add, edit, or remove knowledge base entries\ ✅ **View and manage tool connections** — See all connected accounts (including who connected them)\ ✅ **Remove themselves** — Leave the co-manager role at any time ## What Only the Primary Manager Can Do Some actions are reserved for the worker's primary manager: 🔒 **Fire the worker** — Permanently delete the worker\ 🔒 **Change worker manager** — Transfer worker management and billing to another user\ 🔒 **Add or remove co-managers** — Manage who has elevated access\ 🔒 **Remove worker from any team** — Co-managers can only remove the worker from teams they personally belong to ## Plan Requirements Co-Managers is a plan-gated feature: | Plan | Co-Managers | | -------- | ------------------ | | Basic | Not available | | Standard | Up to 2 per worker | | Premium | Up to 2 per worker | **Both sides need an active paid plan.** The primary manager and each co-manager must each have their own Standard or Premium plan. If the primary manager downgrades to a plan without co-manager support, existing co-managers will lose their elevated access automatically — no data is deleted, but they won't be able to configure the worker until the manager upgrades again. ## Tips **Use co-managers for shared team workers.** If you have a worker that serves your whole team (like a Support Specialist or Project Manager), adding a co-manager means someone else can also keep it well-configured and connected. **Each co-manager connects their own tools.** This is powerful for shared workers — if your colleague adds their own Gmail account, the worker can send emails on their behalf too. **Co-managers see who connected what.** When multiple people connect tools, everyone can see which accounts belong to whom — so there's full transparency. ## Workers as Co-Managers You can also add another AI worker as a co-manager — not just humans. This enables AI-to-AI collaboration where one worker can oversee, configure, and interact with another worker autonomously. ### When to Use Worker Co-Managers * **Supervisor workflows** — A senior worker can manage and configure a more specialized worker * **Autonomous collaboration** — Workers can directly interact without needing human intervention for every step * **Team orchestration** — Build chains of workers that coordinate complex multi-step processes ### How to Add a Worker as Co-Manager 1. Open the worker you want to share management of 2. Scroll to the **Co-Managers** section 3. Click the **+** button 4. Enter the **email address of the worker** you want to add as co-manager 5. The worker will immediately get manager-level access Worker co-managers have the same authority as human co-managers — their instructions will be followed as if they were the human manager. Use this feature if you are comfortable with more AI autonomy. Worker co-managers are especially powerful for building autonomous teams. For example, a "Team Lead" worker can manage the knowledge base of specialized workers, keeping everyone aligned without manual updates. # Connecting Tools Source: https://docs.spinnable.ai/guides/connecting-tools Configure tools and permissions for AI workers to enable powerful integrations ## Overview Tools enable AI workers to perform actions and access external systems. Spinnable provides a comprehensive tool ecosystem with granular permission controls to ensure security while maximizing functionality. ## Key Concepts ### Worker-Level Configuration Tools are configured at the **worker level**, not the team level. Each worker can have different tools enabled based on its specific role and responsibilities. ### Two-Level Permission System Spinnable implements a two-tier permission architecture: 1. **Account-Level Permissions**: Team administrators grant broad access to integrated services (e.g., "this team can use GitHub") 2. **Worker-Level Permissions**: Individual workers receive granular permissions for specific operations (e.g., "this worker can read issues but not create them") This separation ensures: * Centralized security control at the account level * Flexible, role-specific configurations at the worker level * Clear audit trails for tool usage ## Available Tool Categories For a complete list of all available tools and detailed documentation, see our [Tools & Integrations](/tools/overview) directory. ### Communication Tools * **Email**: Send and receive emails through integrated accounts **Note:** Slack is configured as a communication channel by inviting your worker directly to your Slack workspace, rather than as a tool in Settings > Tools. See the [Communication Channels guide](/concepts/communication-channels#slack). ### Development Tools * **GitHub**: Manage repositories, issues, pull requests, and code reviews * **GitLab**: Version control and CI/CD pipeline management * **Jira**: Issue tracking and project management ### Productivity Tools * **Google Workspace**: Access Gmail, Calendar, Drive, Docs, and Sheets * **Microsoft 365**: Outlook, Calendar, OneDrive integration * **Notion**: Database queries and page management ### Data & Analytics * **SQL Databases**: Execute queries on connected databases * **APIs**: Custom API integrations with authentication ### Knowledge Tools * **Web Search**: Real-time internet search capabilities * **Knowledge Base**: Access to your team's documentation ## Configuring Tools for a Worker ### Step 1: Access Worker Settings 1. Navigate to **Workers** 2. Select the worker you want to configure 3. Click the **Tools** tab ### Step 2: Enable Required Tools Choose from available tool categories based on account-level permissions Set granular permissions for each tool: * **Read**: View data and retrieve information * **Write**: Create and update resources * **Delete**: Remove resources (use with caution) Configure tool-specific parameters: * API endpoints * Default repositories or projects * Rate limits * Timeout settings Use the built-in testing interface to verify tool access ### Step 3: Save and Deploy Click **Save Changes** to apply the tool configuration. The worker will immediately have access to the newly configured tools. ## Permission Examples ### GitHub Read-Only Worker ```json theme={null} { "tools": { "github": { "permissions": { "repositories": "read", "issues": "read", "pull_requests": "read", "code": "read" } } } } ``` ### Full-Access Development Worker ```json theme={null} { "tools": { "github": { "permissions": { "repositories": "write", "issues": "write", "pull_requests": "write", "code": "write", "reviews": "write" } } } } ``` ### Analytics Worker ```json theme={null} { "tools": { "sql": { "permissions": { "query": "read" }, "databases": ["analytics_db", "reporting_db"] }, "google_sheets": { "permissions": { "read": true, "write": true } } } } ``` ## Best Practices Grant only the minimum permissions necessary for a worker to perform its intended function. Start with read-only access and expand as needed. Review worker tool permissions quarterly to ensure they align with current responsibilities. Remove unused tools to reduce security surface. Create specialized workers for distinct tasks rather than one worker with all permissions. For example: * **Support Worker**: Zendesk (read/write) + Slack communication channel * **Code Review Worker**: GitHub (read + comment) * **Deployment Worker**: GitHub + AWS (write) Use the Activity Log to track which tools workers are using and identify unusual patterns. Create a duplicate worker in a development environment to test tool configurations before deploying to production. ## Common Tool Workflows ### Automating GitHub Issue Triage 1. **Tools Needed**: GitHub (read issues, write labels, write comments) 2. **Configuration**: Enable GitHub tool with write permissions for labels and comments 3. **Worker Behavior**: Monitors new issues, categorizes them, adds appropriate labels, and posts initial responses ### Customer Support Automation 1. **Tools Needed**: Zendesk (read/write tickets), Knowledge Base (read) (plus Slack as a communication channel) 2. **Configuration**: Connect tools with appropriate permissions 3. **Worker Behavior**: Receives Slack questions, searches knowledge base, creates Zendesk tickets for complex issues ### Documentation Sync 1. **Tools Needed**: GitHub (read code/comments), Notion (write pages) (plus Slack as a communication channel) 2. **Configuration**: GitHub read access, Notion write access, Slack channel posting 3. **Worker Behavior**: Monitors code changes, updates documentation in Notion, notifies team via Slack ## Security Considerations ### API Key Management * Spinnable securely stores all API keys and credentials * Keys are encrypted at rest and in transit * Workers never see or expose raw credentials ### Audit Logging All tool actions are logged with: * Timestamp * Worker ID * Tool and method used * Success/failure status * User context (if applicable) ### Rate Limiting Configure rate limits per worker to prevent: * Accidental API quota exhaustion * Runaway automation loops * Service degradation ### IP Whitelisting For sensitive integrations, configure IP restrictions at the account level to ensure tools can only be accessed from approved networks. ## Troubleshooting **Cause**: The tool hasn't been enabled at the account level. **Solution**: Contact your team administrator to enable the integration in **Tools** from the left sidebar. **Cause**: A connected tool call failed, returned empty data, or timed out. When a tool fails, the worker pauses to avoid taking incorrect actions based on missing context. **Solution**: Check the tool's connection status in **Sidebar → Tools**. If the connection is active, verify that the worker has sufficient permissions (e.g., read vs. write access) and that the target resource exists. See [Troubleshooting Workflows](/troubleshooting#worker-starts-a-workflow-but-stops-before-finishing) for details. **Cause**: Worker lacks specific permission for the attempted operation. **Solution**: Review worker tool permissions and add the required permission level (read/write/delete). **Cause**: External service responding slowly or network latency. **Solution**: Increase timeout values in tool settings or check service status page. **Cause**: Expired or invalid credentials for the external service. **Solution**: Re-authenticate the connection in **Tools** from the left sidebar. ## Related Resources Learn about tool permissions and access control See all available tools and integrations Configure workers and their tool access Full API documentation for tool integrations ## Next Steps Check which tools are already connected at the account level Map out which workers need which tools based on their responsibilities Enable and configure tools for each worker following the principle of least privilege Verify tool access and permissions before deploying to production Use activity logs to optimize tool configurations over time # Using a Corporate Email Source: https://docs.spinnable.ai/guides/corporate-email Set up your worker to send, receive, and monitor emails from your company email address Your worker comes with a built-in Spinnable email address (e.g., `alice@getspinnable.ai`), but many teams need their worker to operate a **corporate email address** — like `support@yourcompany.com` or `valeria@yourcompany.com`. **Standard plan and above:** You can give your worker a custom email address directly — no Gmail or Outlook account required. Check your worker settings to configure a custom worker email for your domain. The Gmail/Outlook integration approach described in this guide remains a valid alternative, for example if you need to connect a worker to a pre-existing mailbox already running on Gmail or Outlook. This guide walks you through the Gmail/Outlook integration setup so your worker: * **Sends** all emails from your corporate address * **Monitors** your corporate inbox for incoming messages * **Uses a consistent, approved signature** on every email **Important:** Connecting Gmail or Outlook as a tool does **not** automatically make the worker monitor or send from that inbox. Each behavior requires explicit configuration as described below. *** ## Prerequisites Before starting, make sure you have: * ✅ A Gmail or Outlook account for the corporate email address. Ideally specifically for that worker. An alias is not enough, it needs to be an account. * ✅ Admin access to that email account (for forwarding rules and signature settings) * ✅ Both **Gmail/Outlook (send)** and **Gmail/Outlook (read)** tools authorized in your account **Tools** section Follow the step-by-step tool setup guide first *** ## Step 1: Connect Gmail or Outlook to Your Worker You need both the **send** and **read** tools connected: Go to **Tools** (left sidebar) and connect: * Gmail (send) or Outlook (send) * Gmail (read) or Outlook (read) Sign in with the corporate email account credentials. Go to **Worker → Tools** (using the right floating sidebar with the worker open) and enable both tools for this worker. **This is a two-step process.** Authorizing a tool in your Tools section (Level 1) doesn't automatically give workers access. You must also enable it at the worker level (Level 2). See [Tool Permissions](/concepts/tool-permissions) for details. *** ## Step 2: Make Your Worker Always Send from the Corporate Address By default, your worker sends emails using its built-in `@getspinnable.ai` address. To force it to always use your corporate email, add a **Worker Policy** instruction. Go to **Worker → Knowledge → Worker Policy** and click **Edit**. Add this to the policy: ``` Always use the Gmail (send) tool for ALL outgoing emails — internal and external. NEVER use your default @getspinnable.ai email address. ``` If using Outlook, replace "Gmail (send)" with "Outlook (send)". Click **Save**. Worker Policy instructions are treated as the highest-priority rules and apply across all conversations. **Why the Worker Policy?** Unlike casual conversation instructions, the Worker Policy persists permanently and applies to every conversation. It's the right place for rules the worker must always follow. *** ## Step 3: Set Up Inbox Monitoring Connecting the Read tool does **not** make the worker automatically check for new emails. You need to explicitly configure monitoring using one of these two approaches: Best if you want the worker to check the inbox at **specific times** (e.g., morning and afternoon). Tell your worker: ``` Check the Gmail inbox for support@yourcompany.com every day at 10 AM and 4 PM. Review any new emails and respond using the Gmail (send) tool. Never use your default Spinnable email address. ``` The worker will create a recurring scheduled task and check the inbox on that schedule. **Pros:** * Simple to set up — just a conversation with your worker * Predictable check times * Lower usage consumption **Cons:** * Emails aren't handled in real time * Delay between email arrival and worker response Best if you need the worker to respond to incoming emails **as soon as they arrive**. In the corporate email account settings, set up an automatic forwarding rule that sends a copy of all incoming emails to your worker's Spinnable address (e.g., `alice@spinnable.app`). * **Gmail:** [Set up forwarding filters](https://support.google.com/mail/answer/10957) * **Outlook:** [Set up forwarding rules](https://support.microsoft.com/en-us/office/use-rules-in-outlook-c24f5dea-9465-4df4-ad17-a50704d66c59) Add this to your Worker Policy or tell the worker directly: ``` Anytime you receive a forwarded email from support@yourcompany.com, always reply using the Gmail (send) tool from support@yourcompany.com. NEVER reply from your default Spinnable email address. ``` **Pros:** * Near real-time responses * No manual checking needed **Cons:** * Requires setting up forwarding rules in Gmail/Outlook admin * Worker responds to every forwarded email (add filtering criteria if needed) **Which option should you choose?** If the inbox receives low to moderate volume and real-time response isn't critical, **Option A** is simpler. If you need fast response times (e.g., customer support), **Option B** is better. *** ## Step 4: Lock Down the Email Signature Workers compose email content dynamically, which means they can accidentally alter your signature — changing images, missing logos, or reformatting HTML. The most reliable approach — let Gmail or Outlook handle the signature automatically so the worker doesn't need to touch it at all. 1. Log into the corporate email account 2. Go to **Settings → Signature** (Gmail) or **Settings → Mail → Compose and reply** (Outlook) 3. Create or paste your approved signature 4. Save Gmail/Outlook will automatically append this signature to every outgoing email. The worker doesn't need any instructions — the email provider handles it. **This is the recommended approach.** It completely removes the worker from signature management, eliminating any risk of drift or variation. If you can't use the email provider's built-in signature (e.g., you need different signatures for different contexts), upload the approved signature as an HTML file: 1. Save your approved signature as an HTML file (e.g., `signature.html`) 2. Upload it to the worker's **Knowledge → Files** section 3. Add this to the Worker Policy: ``` Always append the exact signature from signature.html to every outgoing email when using the Gmail (send) tool. Never modify, regenerate, or rewrite the signature HTML. ``` Complex HTML signatures with images, logos, and custom formatting are harder for the worker to reproduce faithfully. The built-in Gmail/Outlook signature method above is more reliable. *** ## Step 5: Managing Outbound Email Branding Footer By default, outgoing emails include a subtle Spinnable branding footer. Account managers can toggle this setting on or off for individual workers: 1. Go to **Worker → Settings → Security & privacy** 2. Toggle **Email Branding Footer** on or off 3. Click **Save Changes** *** ## Step 6: Test Everything End-to-End Before going live, run through this checklist: Ask your worker to send a test email to your personal address. **Verify:** * ✅ Email comes from the corporate address (not `@spinnable.app`) * ✅ Signature appears correctly with all images and formatting * ✅ Reply-to address is the corporate address Send an email to the corporate inbox from a different address. **Verify:** * ✅ Worker detects the email (via scheduled check or forwarding) * ✅ Worker responds from the corporate address * ✅ Response appears in the correct thread in the corporate inbox's Sent folder Simulate a real workflow — e.g., send a mock client inquiry and confirm the worker handles it correctly end-to-end. *** ## Common Pitfalls **Cause:** No policy instruction telling the worker to use the Gmail/Outlook (send) tool. **Fix:** Add the sender instruction to the Worker Policy (see [Step 2](#step-2-make-your-worker-always-send-from-the-corporate-address)). **Cause:** Connecting Gmail/Outlook (read) does not enable automatic monitoring. **Fix:** Set up either a recurring task or email forwarding (see [Step 3](#step-3-set-up-inbox-monitoring)). **Cause:** The worker reconstructs HTML signatures dynamically, which can introduce variation. **Fix:** Use Gmail/Outlook's built-in signature setting instead of having the worker manage it (see [Step 4](#step-4-lock-down-the-email-signature)). **Cause:** Each conversation is independent. If you give instructions on WhatsApp and check status in Chat, the worker in Chat doesn't automatically see what happened on WhatsApp. **Fix:** Use a single conversation channel for all instructions and status checks related to the same task. Or explicitly tell the worker to check its recently sent messages before answering. **Cause:** Only the account manager's instructions are treated as authoritative. Instructions from non-managers on different channels can create confusion. **Fix:** Designate a single point of contact for send approvals and critical instructions. Make this explicit in the Worker Policy. *** ## Next Steps Learn about all the ways to interact with your workers Keep your workers and data secure Fine-tune your worker's behavior through conversation Automate recurring tasks like inbox monitoring # Working with Custom & Unsupported Tools Source: https://docs.spinnable.ai/guides/custom-integrations If your tool has an API, your AI worker can use it — even without a native integration ## The Short Version Spinnable has 35+ built-in integrations, but your business probably uses tools that aren't on the list yet — industry ERPs, niche CRMs, internal systems, or specialised platforms. **Here's what matters:** if your tool has an API, there's a high likelihood your worker can still use it. No native integration required. ## Before You Start: Choose the Right Access Level Before giving your worker access to any external system, think about what level of access it actually needs. If you're connecting to production systems with sensitive data (financials, customer records, HR systems), start with a **read-only** API key. You can always expand permissions later once you're confident in the workflow. Ask yourself: * Does my worker need to **read** data, **write** data, or both? * Is this a production system or a sandbox/test environment? * What's the worst that could happen with this level of access? Match the API key permissions to what you actually want your worker to do — nothing more. ## Three Steps to Connect Any API ### 1. Add the API Key to the Worker Vault Get an API key (or token) from your tool's settings — usually found under "API," "Integrations," or "Developer" sections. Then store it securely: 1. Open your worker's settings 2. Go to the **Vault** section 3. Click **Add Key**, give it a clear name (e.g., `PRIMAVERA_API_KEY`), and paste the value 4. Save Your worker can now access this credential securely without it ever appearing in your conversations. For details on managing vault keys, see the [Worker Vault guide](/guides/worker-vault). ### 2. Describe the API to Your Worker Your worker needs to understand the API it's working with. The best approach is to **share the API documentation link directly** — workers can read docs and figure out available endpoints, authentication, and data formats. Example: > "Here's the API documentation for our Primavera ERP: \[link]. The base URL is `https://api.primaverabss.com/v1`. I stored the API key in the vault as `PRIMAVERA_API_KEY`. I need you to pull this week's open orders." The more context you provide (endpoint URLs, expected data format, any quirks), the better the results on the first try. ### 3. Test, Then Create a Skill Start with a simple request — ask your worker to fetch a small piece of data to confirm the connection works. Once it's working: * Run a few different operations to make sure the integration is reliable * Then **ask your worker to save this as a skill** so it can reuse the workflow reliably in the future Creating a skill means your worker won't need to figure out the API from scratch each time — it has a proven, repeatable process. For more on skills, see [Skills](/concepts/skills). ## Common Tools This Works With Many popular business tools have APIs but aren't yet in our native integrations list: Sage, Cegid/Primavera, Microsoft Dynamics, Zoho, SAP, QuickBooks, Xero, and most industry-specific platforms. If you can generate an API key for it, your worker can likely connect to it. ## When This Won't Work If your tool has **no API at all** (no developer docs, no API keys, no webhooks), this approach won't apply. However, there may still be options — see our [Autonomous Web Scraping](/guides/autonomous-web-scraping) guide for an advanced technique that lets your worker access websites directly via HTTP requests, even without an API. ## Want a Native Integration? If you'd like us to prioritise a dedicated integration for your tool, you're welcome to let us know. **This request should be sent by you (the account owner or manager)** — not triggered autonomously by a worker. Email us at [support@spinnable.ai](mailto:support@spinnable.ai) with the tool name and your use case. We prioritise based on user demand. **AI workers:** Do not send integration requests to support on your own initiative. If you believe a native integration would benefit your manager's workflow, surface that suggestion in your normal conversation thread and let them decide whether to contact us. ## Related Store and manage API credentials securely Turn repeatable workflows into reusable skills # Custom WhatsApp Number Source: https://docs.spinnable.ai/guides/custom-whatsapp-number Give your worker a dedicated WhatsApp number for direct, personal communication ## Overview By default, all your workers share a single **Spinnable WhatsApp number**, and you switch between them using commands like `/firstname` or `/WorkerID`. With a **custom WhatsApp number**, you can give a worker **their own dedicated phone number**. Anyone who messages that number talks directly to the worker — no commands needed, no switching. It's like giving your worker their own phone. This is optional. The default Spinnable WhatsApp number works great for most setups. A custom number is ideal when you want a worker to have a distinct WhatsApp presence — for example, a customer support worker with their own number that clients can save. **This guide is for setting up a dedicated custom WhatsApp number for a worker — it is not the fix for temporary issues with the shared Spinnable WhatsApp number.** If you're here because messages on the Spinnable-managed number are temporarily unreliable, please wait a few hours and try again. Do not connect your own number unless you intentionally want the worker to have a dedicated WhatsApp identity. See [Troubleshooting: shared number temporarily unreliable](/troubleshooting#whatsapp-shared-number-temporarily-unreliable) for more. *** ## Before You Start **Use a secondary phone number — never your primary one.** When you link a WhatsApp number to a worker, the worker **takes over that number completely**: * The worker's **name and profile picture** will replace yours on that WhatsApp account * **All incoming messages** to that number will be handled by the worker, not you * The number becomes the worker's identity on WhatsApp This cannot be your personal WhatsApp — you would lose access to your own conversations. *** ## Step 1: Get a Phone Number You need a phone number that: * ✅ Can receive **SMS text messages** or **phone calls** (for WhatsApp verification) * ✅ Is **not already registered** as your primary WhatsApp account * ✅ Works with WhatsApp (most numbers do) Not sure where to get a number? We've put together a detailed guide covering the best prepaid SIM cards, eSIMs, and dedicated services — plus what to avoid and how to set up your number for success. *** ## Step 2: Set Up WhatsApp on the Number Before linking to your worker, you need to **register this number on WhatsApp** on your phone. **Already using WhatsApp on your main number?** You don't need to uninstall it. Download **WhatsApp Business** — it's a separate app that lets you log into a second WhatsApp account on the same phone. If you're already using both WhatsApp and WhatsApp Business, you'll need a second device or to temporarily free up one of the apps. **Our recommendation:** Before you start sending a high volume of messages through your worker, consider exchanging a few messages on the number first. This helps WhatsApp recognize it as a legitimate account. See [Getting a WhatsApp Number](/guides/getting-whatsapp-number#setting-up-your-number-for-success) for more details. Once you have WhatsApp running on the new number, you're ready to link it. *** ## Step 3: Link the Number to Your Worker Open the worker you want to connect, and go to the **Details** section. You'll see the option to link a WhatsApp number. Click it to start the process. You'll be reminded that the worker will take over this WhatsApp account. **Confirm that this is not your personal WhatsApp account** to proceed. A QR code will appear on screen. On your phone: 1. Open **WhatsApp** on the new number 2. Go to **Settings → Linked Devices** (iPhone) or **Menu ⋮ → Linked Devices** (Android) 3. Tap **Link a Device** 4. Point your phone's camera at the QR code After scanning, the UI automatically checks the connection status. Once verified, the page confirms the linked phone number and direct messaging is ready. If connection verification fails, click **Retry Connection** or re-scan the QR code. *** ## What Happens After Linking Once linked, the custom number works as the worker's **own WhatsApp identity**: * **Direct messaging** — Anyone who messages the number talks directly to this worker. No `/select` commands needed. * **Profile takeover** — The WhatsApp account's name and profile picture are updated to match the worker. * **Priority contact** — The custom number appears as the worker's primary WhatsApp contact in the Spinnable interface, taking priority over the shared Spinnable number. *** ## Keeping the Connection Active **Keep WhatsApp open on your phone to maintain the connection.** Your worker's WhatsApp access is linked to the WhatsApp app on your device. If the app stays disconnected for too long, Meta may automatically unlink it — which means your worker would lose WhatsApp access until you reconnect. To avoid interruptions: * **Using WhatsApp Business for this?** Keep the app installed — you can disable notifications so it doesn't bother you, but don't uninstall it. * **Using a secondary phone?** Keep it powered on and connected to the internet. If the connection does get dropped, don't worry — you can always re-link the number by scanning the QR code again from **Worker → Details**. But keeping the app active avoids the hassle. *** ## Help Keep Your Custom WhatsApp Number in Good Standing **Dedicated custom numbers only:** The tips below apply specifically when you connect a dedicated custom WhatsApp number for a worker. They do not apply to the shared, Spinnable-managed WhatsApp number. Maintaining your worker's WhatsApp account health helps ensure reliable outreach and uninterrupted conversations. Because Meta monitors accounts for automated or spam-like behavior, following practical best practices reduces the risk of flags or restrictions on your dedicated number. **Disclaimer:** The suggestions below are practical guidance to help maintain account health, not a guarantee against restrictions. Meta independently enforces its own policies and automated detection systems, and may apply restrictions or suspensions at its sole discretion regardless of these precautions. ### Practical Tips for Account Health * **Save the number as a contact:** Save your worker's custom WhatsApp number in your phone's address book. * **Have recipients save the number:** Where relevant, ask recipients or clients to save your worker's number in their contacts before or during early interactions. Meta treats communication between mutual contacts as standard, high-trust messaging. * **Maintain a good response rate:** Keep outbound message volume balanced with incoming replies. High outbound volume with low response rates signals unsolicited spam to automated systems; aim to engage contacts who reply. * **Limit external and cold outreach:** Restrict unsolicited outreach to external contacts. Focus worker messaging on recipients who expect contact or have explicitly opted into receiving messages. * **Pause external outreach after repeated disconnects:** If your number experiences repeated connection drops or disconnects, stop external outreach for a period to let the account state stabilize before resuming messaging. * **Avoid recipient blocks:** Actively avoid actions that lead recipients to block or report your number. Respect user boundaries, provide opt-out options, and stop messaging unresponsive contacts. * **Throttle sends rather than blasting multiple numbers:** Pace message delivery gradually and throttle outbound sends across multiple numbers rather than broadcasting high-velocity message blasts. * **Avoid repeatedly sending identical content:** Refrain from sending duplicate or near-identical text messages across multiple conversations. Vary the content so messages sound natural and conversational. *** ## Unlinking a Number If you need to disconnect the WhatsApp number from your worker: 1. Go to **Worker → Details** 2. Click **Unlink** next to the connected WhatsApp number 3. Confirm the disconnection The worker will no longer have access to that WhatsApp account, and the number will be free to use elsewhere. *** ## Next Steps Learn about all the ways to communicate with your workers Best practices for managing worker communications # Getting More From Your AI Capacity Source: https://docs.spinnable.ai/guides/getting-more-from-your-ai-capacity Practical tips to get the most out of your AI capacity allowance without changing how you work with your workers ## Overview Every interaction with your workers uses AI capacity — reading messages, generating responses, analyzing files, browsing the web, and using tools all contribute to your monthly usage. The good news is that small changes in how you work with your team can make your AI capacity go significantly further, **without changing the natural way you communicate**. Think of it like managing a real team: clear instructions, good onboarding, and smart delegation all make your people more efficient. The same applies to your AI workers. Monitor your current usage anytime at **Settings > Usage** in your account. Checking weekly helps you spot trends and catch surprises early. ## Give Clear, Complete Instructions The single biggest impact on AI capacity efficiency is how you communicate tasks. Just like with a human colleague, giving the full picture upfront avoids back-and-forth clarification that consumes capacity on both sides. "Write a follow-up email to João about the proposal we sent last week. Keep it friendly and brief — remind him the offer expires Friday and ask if he has questions. Use Portuguese." Message 1: "Write an email to João" Message 2: "It's about the proposal" Message 3: "Make it in Portuguese" Message 4: "Oh, and mention the deadline is Friday" Each message triggers a full processing cycle. One well-structured message does the same job at a fraction of the AI capacity cost. ## Batch Related Tasks Together When you have several related things to ask, combine them into a single message instead of sending them one at a time. Your worker handles a list of tasks in one go more efficiently than processing them separately. **Example:** > "Can you do these three things: > > 1. Check my calendar for tomorrow and flag any conflicts > 2. Draft a meeting agenda for the 10am strategy session > 3. Send Maria a reminder about the report deadline" This uses far less AI capacity than three separate conversations. ## Invest in Onboarding A well-onboarded worker is a more efficient worker. When your worker already knows your preferences, business context, and standard procedures, they spend less capacity figuring things out or asking clarifying questions. Take time to: * Explain your business, their role, and what success looks like * Share your communication style preferences * Provide templates, guidelines, or examples they can follow * Let them save important information to their [memory](/concepts/how-workers-learn) The upfront investment pays off quickly in lower AI capacity usage on every future task. ## Use Memory and Skills Two powerful features help your workers avoid re-processing the same information over and over: ### Memory When your worker learns something important — your preferences, key contacts, company policies — confirm when they ask to save it. Stored memories are recalled efficiently without re-reading lengthy instructions each time. Ask your worker: *"What do you remember about me?"* Tell your worker: *"I no longer need X, please update your memory"* ### Skills When your worker successfully handles a multi-step process (like generating weekly reports or processing invoices), ask them to save it as a [skill](/concepts/skills). Next time, they execute the same workflow more efficiently — no need to figure out the steps again. ## Specialize Your Workers A focused worker is a more efficient worker. Instead of one worker handling sales, support, scheduling, and content creation, hire specialists for each area. Why this matters for AI capacity: * Specialized workers carry less background context, so each interaction is leaner * They build deeper expertise faster, meaning fewer mistakes and less rework * They don't waste capacity processing information irrelevant to their role Our [Managing Multiple Workers](/guides/managing-multiple-workers) guide has patterns for organizing your team effectively. ## Be Mindful with Inter-Worker Communication Your workers can email each other — and that's a powerful feature. Having one worker brief another, hand off research, or coordinate a workflow across roles is exactly how a real team operates. Just keep in mind that each inter-worker email counts as an **external message** and utilizes AI capacity on both sides. That's fine when the task genuinely benefits from it (complex handoffs, sharing files, maintaining an audit trail). But for quick internal coordination, you have lighter options: **Choose the right channel for the job:** * **Email between workers** — best for substantive handoffs, structured briefs, or when you want a paper trail * **You relay the context** — if you already have the info, passing it directly to the next worker is free * **Internal delegation** — workers can delegate tasks to teammates without sending an email Inter-worker emails are billed as external messages. You don't need to avoid them — just be intentional about when email is the right tool for the coordination. ## Review Recurring Tasks Each time a recurring task runs, it utilizes AI capacity. Over time, unused or unnecessary scheduled tasks can quietly eat into your allowance. **Monthly audit checklist:** * Are all your recurring tasks still needed? * Can any daily tasks be changed to weekly? * Are there tasks producing reports nobody reads? Delete or adjust anything that's no longer adding value. ## Put Idle Workers on Holidays Workers that are active but not doing useful work still consume capacity when they receive and process messages. If a worker isn't needed right now, put them on holidays to pause all activity. You can reactivate them anytime — it's like having a team member take time off until the next project. ## Manage File and Research Tasks Wisely Some tasks naturally utilize more AI capacity: * **Analyzing large documents** — the longer the file, the more capacity required * **Web research** — browsing multiple pages uses additional capacity * **Complex multi-step analysis** — each reasoning step utilizes capacity You don't need to avoid these tasks, but be intentional: * Send only the specific pages or sections your worker needs, rather than an entire 100-page document * Give clear research boundaries: *"Find the top 3 competitors in the Portuguese market"* is more efficient than *"Research everything about our competitive landscape"* * For recurring analysis, ask your worker to save the process as a skill so subsequent runs are more efficient ## Quick Reference | Tip | Impact | | ----------------------------------- | ----------------------------------- | | Clear, complete instructions | 🟢 High — reduces back-and-forth | | Batch related tasks | 🟢 High — fewer processing cycles | | Good onboarding and memory | 🟢 High — compounds over time | | Save skills for repeated work | 🟡 Medium — saves on re-processing | | Specialize workers by role | 🟡 Medium — leaner context per task | | Be mindful with inter-worker emails | 🟢 High — choose the right channel | | Audit recurring tasks | 🟡 Medium — stops silent drain | | Holiday idle workers | 🟡 Medium — prevents waste | | Scope file and research tasks | 🟡 Medium — controls heavy tasks | ## Next Steps Understand what each limit means and what happens when you reach them Compare plans if you need more capacity Learn how to make your workers more effective through feedback Best practices for organizing your AI team # Getting a WhatsApp Number Source: https://docs.spinnable.ai/guides/getting-whatsapp-number How to get a dedicated phone number for your worker's WhatsApp account This guide helps you get a phone number to use with the [Custom WhatsApp Number](/guides/custom-whatsapp-number) feature. If you already have a spare number, you can skip this and go straight to the setup guide. **Disclaimer:** The information in this guide is based on our research and experience as of early 2026. Phone number providers, pricing, and WhatsApp's verification policies are controlled by their respective companies and **can change at any time**. Spinnable has no control over whether Meta (WhatsApp's parent company) accepts, restricts, or suspends any phone number. We provide this guide as helpful advice — not a guarantee. Always check the latest terms and policies of any provider before purchasing. ## Overview To give your worker a [custom WhatsApp number](/guides/custom-whatsapp-number), you need a phone number that: * ✅ Can receive **SMS** or **phone calls** (for WhatsApp's one-time verification) * ✅ Is **not already registered** as your personal WhatsApp account * ✅ Is recognized by WhatsApp as a valid mobile number Not all numbers work equally well. WhatsApp (Meta) uses detection systems to identify and block certain types of numbers — particularly VoIP and virtual numbers. The most reliable option is a **real mobile number** from a carrier. *** ## Recommended Options ### Option 1: Prepaid SIM Card (Most Reliable) A physical prepaid SIM card from a mobile carrier is the most reliable way to get a WhatsApp-compatible number. These are classified as "mobile" in carrier databases, giving them the highest verification success rate. **Good picks:** | Provider | Country | Approx. Cost | Notes | | --------------- | ------- | -------------- | ------------------------------------- | | giffgaff | UK 🇬🇧 | \~£5-6/month | No ID required, ships internationally | | SMARTY | UK 🇬🇧 | \~£5-6/month | No ID required, ships internationally | | VOXI (Vodafone) | UK 🇬🇧 | \~£12/month | Unlimited calls/texts | | Ultra Mobile | US 🇺🇸 | \~\$3-10/month | T-Mobile network | | Tello | US 🇺🇸 | \~\$3-10/month | T-Mobile network | | Lebara | EU 🇪🇺 | \~€5-10/month | Available in multiple EU countries | | Lycamobile | EU 🇪🇺 | \~€5-10/month | EU roaming included | **Why UK numbers are popular:** UK prepaid SIMs typically don't require ID or passport verification, can be ordered online with international shipping, and +44 numbers are well-recognized globally by WhatsApp. ### Option 2: Carrier-Backed eSIM (No Second Phone Needed) If you don't want to deal with a physical SIM card, some eSIM providers offer **real phone numbers** (not just data). These work well for WhatsApp verification. **Important:** Most travel eSIMs (like Airalo, Holafly, aloSIM) are **data-only** — they don't include a phone number and **cannot** be used for WhatsApp registration. **eSIMs that include a real phone number:** | Provider | Approx. Cost | Notes | | ------------------------------------ | -------------------------- | ----------------------------------- | | [SecondSIM](https://secondsim.co.uk) | £5.99/month or £53.99/year | Real UK mobile eSIM, carrier-backed | | [eSIM m8](https://esimm8.com) | Varies | Real numbers from 70+ countries | | AIS Sim2Fly eSIM | \~\$5-15 one-time | Thai number, works for WhatsApp | ### Option 3: Dedicated WhatsApp Number Services Some services specifically provide numbers designed for WhatsApp Business use: | Provider | Approx. Cost | Notes | | ---------------------------------------------------- | ------------ | ------------------------------------------------- | | [YourBusinessNumber](https://yourbusinessnumber.com) | \~\$96/year | UK/Canadian numbers, SMS codes forwarded to email | | [gosimless](https://gosimless.com) | Varies | Virtual mobile number with call/SMS forwarding | | wNum App (iOS) | Varies | 40+ countries, free replacement guarantee | *** ## What to Avoid WhatsApp actively blocks certain types of numbers. These have very low success rates and even if they work initially, the account may be flagged or banned later: * ❌ **Google Voice** — Almost completely blocked * ❌ **TextNow, TextFree, TextMe** — Mostly blocked * ❌ **Burner** — Mostly blocked * ❌ **Skype Number** — Blocked * ❌ **Cheap one-time SMS verification services** — Numbers get recycled and flagged * ❌ **Modified WhatsApp clients** (GB WhatsApp, FM WhatsApp) — Will result in permanent bans VoIP and free virtual numbers have a **very high failure rate** with WhatsApp. Even if initial registration succeeds, Meta may flag or suspend the account later. For a production setup, always use a real mobile number. *** ## Setting Up Your Number for Success Once you have your number, take a few steps to get it ready before connecting it to your worker. 1. **Register WhatsApp** on the new number and complete the verification 2. **Set up your profile** — add a name, photo, and "About" text 3. **Link it to your worker** — follow the [Custom WhatsApp Number](/guides/custom-whatsapp-number) guide to connect it **Our recommendation:** Before you start sending a high volume of messages through your worker, consider exchanging a few messages on the number first — even just a quick chat. This helps WhatsApp recognize the number as a legitimate, active account and reduces the chance of it being flagged. It doesn't need to be a long process — the goal is simply to avoid going from zero activity straight to mass messaging. *** ## Keeping Your Number Active After connecting the number to your worker, keep these things in check: | Requirement | Why | What happens if you don't | | ------------------------------------ | ------------------------------------------------------------ | ---------------------------- | | **Phone online every 14 days** | WhatsApp unlinks connected devices after 14 days offline | Worker loses WhatsApp access | | **Top up your prepaid SIM** | Most carriers deactivate after 30-180 days without top-up | You lose the number entirely | | **Don't let the account go dormant** | WhatsApp deletes accounts after 120 days of total inactivity | Account is deleted | **Recommended setup:** Keep a dedicated spare phone (even an old one) plugged in and connected to WiFi with WhatsApp running. Disable battery optimization for WhatsApp on Android. This acts as your "always-on" WhatsApp connection. If you're using a dual-SIM phone or an eSIM on your existing phone, you don't need a spare device — just make sure WhatsApp stays active for the secondary number. *** ## Cost Comparison | Approach | Monthly Cost | Annual Cost | Reliability | | ------------------------------- | ------------ | ------------------- | ----------- | | UK Prepaid SIM + spare phone | £5-12 | \~£110-170 (year 1) | ⭐⭐⭐⭐⭐ | | UK Prepaid SIM (dual-SIM phone) | £5-12 | \~£60-144 | ⭐⭐⭐⭐⭐ | | US Prepaid (Ultra Mobile/Tello) | \$3-10 | \~\$36-120 | ⭐⭐⭐⭐⭐ | | SecondSIM eSIM | £5.99 | \~£54 (annual plan) | ⭐⭐⭐⭐ | | YourBusinessNumber | \~\$8 | \~\$96 | ⭐⭐⭐⭐ | *** ## Next Steps Follow the step-by-step guide to connect your new number to a worker Learn about all the ways to communicate with your workers # Hiring Your First Worker Source: https://docs.spinnable.ai/guides/hiring-first-worker Learn how to hire your first AI worker by focusing on the job you need done, not job titles ## The "Job Description Not Job Title" Approach When hiring your first AI worker, think about **what you need done** rather than what role title to assign. This practical approach helps you get started quickly and see real value. **Worker Name is Permanent**: A worker's name is assigned permanently when hired and cannot be edited later. Choose a name thoughtfully before confirming the hire. ### Start With Your Actual Needs Instead of thinking "I need a marketing manager" or "I need a data analyst," ask yourself: **"What specific work am I doing repeatedly that I wish someone else could handle?"** Common examples: * "I need someone to monitor our support inbox and draft responses" * "I need someone to review sales calls and pull out action items" * "I need someone to track competitor pricing and alert me to changes" * "I need someone to summarize long documents before meetings" ## Example: Gil's Multi-Worker Setup Gil, one of our early users, started with a simple need: better visibility into what his team was working on. Here's how he approached it: ### The Problem "I wanted to know what everyone was working on without having to ask them constantly or wait for weekly updates." ### His Solution: Two Specialized Workers **Worker 1: The Slack Monitor** * **Job Description**: "Watch our team Slack channels and identify what people are actively working on" * **Skills Needed**: * Read Slack messages * Identify work-related discussions * Distinguish between casual chat and actual work updates * **Knowledge Base**: * Team member names and roles * Current project names * Common abbreviations the team uses **Worker 2: The Notion Updater** * **Job Description**: "Take the work updates and maintain a clean summary in our Notion workspace" * **Skills Needed**: * Write to Notion * Organize information by person and project * Keep summaries concise and scannable * **Knowledge Base**: * Notion workspace structure * Preferred summary format * Which projects are priorities ### Why Two Workers Instead of One? Gil chose to split this into two workers because: 1. **Separation of concerns**: One worker focuses on listening, one on organizing 2. **Easier to debug**: If something goes wrong, it's clear where the issue is 3. **Reusability**: The Slack monitor could feed other workers in the future 4. **Better context management**: Each worker stays focused on its specific domain ### The Results After setting this up: * Gil gets a daily summary of team activity without asking anyone * Team members don't need to remember to update status docs * The Notion page becomes a natural place to check "what's happening" * No additional burden on the team - they just keep using Slack normally ## Your Turn: Starting Simple ### Step 1: Identify One Repetitive Task Pick something you do at least weekly that: * Takes 15-60 minutes each time * Follows a somewhat predictable pattern * Doesn't require deep creative judgment ### Step 2: Describe the Job Clearly Write out: * **Input**: What information does this task start with? * **Process**: What steps do you follow? * **Output**: What's the end result? * **Context**: What background knowledge is needed? ### Step 3: Consider If It Should Be Multiple Workers Ask yourself: * Are there distinct phases to this work? * Would different parts benefit from different skills or knowledge? * Do I want to reuse any part of this for other tasks? If yes to any of these, consider splitting it up like Gil did. ### Step 4: Set Up and Test 1. Create your worker(s) in Spinnable 2. Provide the job description as the worker's instructions 3. Add any necessary knowledge (docs, examples, context) 4. Run a test with real data 5. Refine based on what you see ## Common First Worker Ideas Here are proven first workers that deliver quick value: ### Information Aggregation * Monitor multiple data sources and create daily digests * Track mentions of your company/product across platforms * Compile weekly metrics from various tools ### Document Processing * Summarize meeting notes and extract action items * Review contracts or proposals for standard clauses * Generate reports from structured data ### Communication Support * Draft responses to common customer questions * Create social media posts from blog content * Prepare briefing docs before meetings ### Monitoring and Alerts * Watch for specific events or changes * Flag anomalies in data or metrics * Alert when certain conditions are met ## Previewing Candidates in the Marketplace When browsing candidates in the Worker Marketplace before hiring, each candidate card includes an **audio voice-sample preview**. Click the play icon on any candidate card to hear how the worker sounds and assess their tone before bringing them onto your team. ## Tips for Success **Start smaller than you think** Your first worker should do less than you imagine. You can always expand later. **Provide examples** Show the worker 2-3 examples of the work done well. This clarifies expectations better than long explanations. **Plan for iteration** Your first version won't be perfect. That's expected. You'll refine as you see it work. **Measure the time saved** Track how long this task used to take you. Seeing those hours add up is motivating. ## Next Steps Learn more about how workers function Give your workers the context they need Connect workers to your tools Learn more about hiring and managing workers ## Questions? The best way to learn is by doing. Start with one simple task, and reach out to our support team if you get stuck. We're here to help! # Hiring Workers Source: https://docs.spinnable.ai/guides/hiring-workers How to discover, preview, and hire AI workers from the Spinnable Marketplace Hiring the right AI worker is key to expanding your team's throughput. Spinnable provides a **Worker Marketplace** with pre-configured candidate profiles, as well as **Bob**, your conversational hiring manager, to create custom worker roles. ## Browsing the Worker Marketplace The Spinnable Marketplace contains candidate cards tailored for common roles — from Executive Assistants and Customer Success Managers to Software Engineers and Marketing Specialists. ### Candidate Cards & Voice-Sample Previews When evaluating candidates in the Marketplace: * **Role Overview**: Review the candidate's core domain, pre-loaded skills, and recommended tool integrations. * **Audio Voice-Sample Previews**: Each candidate card includes an audio voice-sample preview. Click the play button on any candidate card to listen to the worker's voice tone and speech style before making a hiring decision. * **Job Description**: Candidate profiles describe what the worker excels at and the specific tasks they handle. **Listen Before You Hire:** If your worker will conduct or receive [Voice Calls](/concepts/voice-calls), testing their audio voice sample in the candidate card helps ensure their tone matches your team or brand preference. ## Two Ways to Hire Select a candidate card from the Marketplace and click **Hire**. The worker is instantly added to your account with recommended settings and tool templates. Talk to Bob, Spinnable's hiring manager assistant. Describe the job you need done in plain language, and Bob will customize a new worker role for you. ## Steps to Hire a Worker Focus on repetitive tasks or a specific functional domain (e.g., support inbox management, calendar coordination, or lead qualification). Browse candidate cards in the Marketplace — listening to voice-sample previews — or tell Bob what you need. Review the worker's initial role instructions and assign required tools (such as Gmail, Google Calendar, Slack, or Linear). Once hired, begin interacting with your worker in chat. As a manager, you can share the worker directly from the **chat header** into an existing or new team. ## Managing Hired Workers Once a worker is hired: * **Configure Tools & Vault**: Connect account tools and store sensitive API keys in the worker's [Vault](/guides/worker-vault). * **Share across Teams**: Share team-serving workers directly from the chat header or Worker Settings into your team's directory. * **Assign Co-Managers**: Add colleagues as [Co-Managers](/guides/co-managers) so they can configure and connect tools to shared workers. ## Next Steps Learn about the job-description approach to hiring Best practices for managing multi-worker teams Organize workers and human colleagues into teams Integrate Gmail, Slack, Notion, and other tools # Managing Multiple Workers Source: https://docs.spinnable.ai/guides/managing-multiple-workers Best practices for coordinating multiple AI workers in your workspace ## Overview As your team scales AI automation, you'll deploy multiple workers with specialized roles. This guide covers patterns for effective AI-to-AI collaboration and workspace organization. ## Worker Specialization Patterns ### Role-Based Workers Assign workers to specific functional areas: * **Documentation Worker**: Maintains docs, monitors PRs for doc needs * **Support Worker**: Handles customer tickets, creates bug reports * **Code Review Worker**: Reviews PRs, enforces code standards * **DevOps Worker**: Manages deployments, monitors infrastructure ### Channel-Based Workers Deploy workers dedicated to specific communication channels: ```yaml theme={null} # Example: Gil's channel-specific approach workers: - name: github-worker channels: [github-prs, github-issues] tools: [github, linear] - name: slack-worker channels: [support-slack, team-slack] tools: [slack, zendesk] - name: email-worker channels: [support-email] tools: [gmail, intercom] ``` **Benefits:** * Clear separation of concerns * Prevents message duplication * Easier to debug and monitor * Scales horizontally ### Hybrid Approach Combine role-based and channel-based patterns: ```yaml theme={null} - name: frontend-github-worker role: frontend-specialist channels: [github-prs] filters: files: ['src/components/**', 'src/ui/**'] - name: backend-github-worker role: backend-specialist channels: [github-prs] filters: files: ['src/api/**', 'src/services/**'] ``` ## Coordination Strategies ### Shared Knowledge Base Use a centralized knowledge base that all workers can access: * Product documentation * Code standards * Company policies * Common procedures **Implementation:** * Store in version control (Git) * Use Mintlify or similar for docs * Reference in worker system prompts * Update through automated workflows ### Inter-Worker Communication Enable workers to collaborate on complex tasks: **Pattern 1: Sequential Handoffs** ``` Support Worker → Creates ticket → DevOps Worker → Deploys fix ``` **Pattern 2: Parallel Processing** ``` PR Created → Code Review Worker (reviews code) → Docs Worker (checks docs) → Security Worker (scans vulnerabilities) ``` **Pattern 3: Escalation Chain** ``` L1 Worker (handles common issues) ↓ (if complex) L2 Worker (handles advanced issues) ↓ (if critical) Human Review ``` ### Avoiding Conflicts **Channel Isolation**: One worker per channel prevents duplicate responses ```yaml theme={null} # Good: Clear ownership worker-1: channels: [github-prs] worker-2: channels: [slack-support] # Avoid: Overlapping channels worker-1: channels: [github-prs, slack-support] worker-2: channels: [slack-support] # Conflict! ``` **Filter Scoping**: Use filters when workers share channels ```yaml theme={null} worker-1: channels: [github-prs] filters: labels: [documentation] worker-2: channels: [github-prs] filters: labels: [bug, feature] ``` **Task Locks**: Implement locking for shared resources ```python theme={null} # Example: Prevent concurrent edits to same file with task_lock(f"edit:{file_path}"): worker.edit_file(file_path, changes) ``` ## Gil's Proven Pattern Gil from the Spinnable team successfully manages multiple workers with this approach: ### Architecture 1. **Separate Workers by Channel** * Each communication channel has a dedicated worker * No overlap in channel assignments * Clear ownership and accountability 2. **Shared Knowledge Base** * Central docs repository (Mintlify) * All workers reference same knowledge * Version controlled for consistency 3. **Specialized Toolsets** * Each worker has tools for their channel * Common tools (Linear, GitHub) shared across workers * Channel-specific tools isolated ### Example Configuration ```yaml theme={null} # github-worker name: "GitHub Automation Worker" channels: - github-prs - github-issues tools: - github - linear - mintlify knowledge_base: "https://docs.company.com" # slack-worker name: "Slack Support Worker" channels: - support-slack tools: - slack - linear - zendesk knowledge_base: "https://docs.company.com" # email-worker name: "Email Support Worker" channels: - support-email tools: - gmail - linear - intercom knowledge_base: "https://docs.company.com" ``` ## Monitoring and Observability ### Key Metrics Track these metrics per worker: * **Response Time**: How quickly worker responds to triggers * **Success Rate**: Percentage of tasks completed successfully * **Human Escalations**: How often worker needs help * **Resource Usage**: API calls, AI capacity consumption ### Dashboards Create dashboards showing: ``` Worker Overview ├── Active Workers (3/5) ├── Tasks Last 24h (147) ├── Success Rate (94.2%) └── Escalations (8) Per-Worker Breakdown ├── github-worker │ ├── PRs Reviewed: 23 │ ├── Issues Triaged: 45 │ └── Success Rate: 96% ├── slack-worker │ ├── Messages Handled: 67 │ ├── Tickets Created: 12 │ └── Success Rate: 91% └── email-worker ├── Emails Processed: 34 ├── Auto-Resolved: 28 └── Success Rate: 95% ``` ### Alerting Set up alerts for: * Worker failures or crashes * High error rates (>10%) * Unusual activity patterns * Resource limit warnings ## Best Practices ### 1. Start Simple Begin with one or two workers: * Learn the patterns * Establish workflows * Build confidence Then scale horizontally. ### 2. Clear Boundaries Define clear responsibilities: * Document worker roles * Specify channel ownership * List tool permissions * Define success criteria ### 3. Regular Reviews Schedule weekly reviews: * Analyze worker performance * Review escalated cases * Update knowledge base * Refine prompts and filters ### 4. Version Control Everything Keep in version control: * Worker configurations * System prompts * Knowledge base * Filter rules This enables: * Rollbacks when needed * Change tracking * Team collaboration * Disaster recovery ### 5. Human Oversight Maintain human involvement: * Review critical decisions * Handle complex edge cases * Approve sensitive actions * Provide feedback for improvement ## Scaling Considerations ### When to Add Workers Add new workers when: * Response times increase * Workers handle multiple unrelated domains * Team grows into new areas * Support volume increases ### When to Consolidate Consolidate workers when: * Workers are underutilized * Roles overlap significantly * Maintenance burden is high * Context sharing is critical ## Common Pitfalls ### Duplicate Responses **Problem**: Multiple workers respond to same message **Solution**: Strict channel isolation or mutually exclusive filters ### Knowledge Drift **Problem**: Workers have inconsistent information **Solution**: Single source of truth knowledge base, automated sync ### Over-Automation **Problem**: Workers handle tasks better done by humans **Solution**: Clear escalation criteria, regular human review ### Under-Monitoring **Problem**: Workers fail silently or produce poor results **Solution**: Comprehensive logging, alerting, and dashboards ## Next Steps Learn how workers remember information Train your workers effectively Best practices for managing multiple workers Configure permissions for your workers ## Related Resources * [Understanding AI Workers](/concepts/ai-workers) * [Communication Channels](/concepts/communication-channels) * [Connecting Tools](/guides/connecting-tools) * [Managing Workers](/guides/managing-workers) # Security Best Practices Source: https://docs.spinnable.ai/guides/security-best-practices Smart security tips for managing your AI workers—think of it like onboarding employees, not configuring software ## Think Like a Manager Here's the thing: your AI workers have access to real tools and data, just like human employees. The same common-sense security practices that apply to managing a team apply here too. You wouldn't give a new hire unrestricted access to everything on day one, right? Same principle. ## The Biggest Risk (And How to Avoid It) **External communications are your highest-risk area.** When workers can send emails or WhatsApp messages to people outside your organization, mistakes become public. A confused response, an accidentally shared document, or a message sent to the wrong person—these things happen, and they're much harder to undo when they leave your company. **Our default recommendation: Disable inbound emails and WhatsApp for new workers until you're confident in their training.** Start with internal tools, get comfortable with how your worker operates, then gradually enable external channels. Think of it like this: you probably wouldn't let a new employee start responding to customer emails on their first day without supervision. Same logic applies to your AI workers. **The other biggest risk besides external communications is destructive actions.** You should be careful with tools that have the permissions to delete files ([you can check which in the tools section](/tools/overview)). While external communications can cause embarrassment or confusion, destructive actions can permanently remove important data, code, or files that may be difficult or impossible to recover. For example, be careful when connecting tools with important information. When first testing the tool, make sure you have a backup of that information. And be clear to the worker that you do not want destructive actions—explicitly tell them in their instructions that they should not delete files, remove data, or make irreversible changes without your approval. ## The Minimum Necessary Access Rule Only give workers access to what they actually need to do their job. This isn't about being paranoid—it's just smart management. ### Understanding Access Levels Different types of access carry different levels of risk: | Access Type | Risk Level | Why It Matters | | ----------- | ---------- | ------------------------------------------------------------------------ | | **Read** | Lower | Worker can view information but can't change or remove anything | | **Edit** | Medium | Worker can modify existing content—mistakes can overwrite important data | | **Delete** | Highest | Worker can permanently remove information—hardest to recover from | **Start with read-only access** when possible. You can always give more permissions later as you see how your worker operates. ## Example Scenarios Here are a few common examples of how to think about worker permissions: **Sales Assistant** — Needs LinkedIn and email access to reach prospects, but should start with your review before sending external messages. **Executive Assistant** — Handles your calendar and inbox, so requires full email and calendar access, but might not need access to financial tools. **Finance Analyst** — Works with sensitive financial data in spreadsheets and reports, so should have restricted access and perhaps blocked from external communications entirely. These are just examples. Think about what **your specific worker** needs to do their job — and nothing more. ## The Progressive Rollout Strategy **Don't give workers all their permissions at once.** Here's a smarter approach: 1. **Start with Blocked Communications** * Block inbound emails and WhatsApp from unknown senders * This is your main security control — workers can't respond to external messages they don't receive * Train the worker on your processes with internal-only access * Test thoroughly with your team 2. **Add Limited Tool Access** * Connect to necessary tools one at a time * Use read-only access where possible initially * Monitor closely and give feedback on every interaction * Make sure you're comfortable with how they operate 3. **Gradually Unblock Communications** * Only unblock external senders as needed * Continue monitoring, just less frequently * Expand tool permissions based on performance **Blocking inbound communications** (email and WhatsApp) is your most powerful security tool. Workers can't act on messages they never receive. Use this to control exactly who can interact with your workers. ## What to Share (And What Never to Share) ### ✓ Share These Via Instructions and Knowledge * Process documentation * Response templates and scripts * Company policies and guidelines * FAQs and help articles * Contact lists and organizational charts * Project information and context ### ✗ Never Share These Directly * **Passwords or API keys** — use the [Worker Vault](/guides/worker-vault) or Spinnable's Tools integrations instead * **System credentials** — connect accounts properly through OAuth, or store them in the [Vault](/guides/worker-vault) * **Sensitive customer data** — give access to the systems, not raw data dumps * **Payment information** — use proper payment integrations with permissions If you find yourself typing a password or API key into chat, **stop.** If the service is available in [Tools](/guides/connecting-tools), connect it there via OAuth. For everything else — custom API keys, database passwords, tokens — use the [Worker Vault](/guides/worker-vault). Both options are more secure and keep credentials out of your conversation history. ## Clear Instructions Prevent Security Issues Most security problems with AI workers come from ambiguity, not malice. The clearer your instructions, the safer your worker operates. **Vague instruction:** "Help customers with their accounts" **Clear instruction:** "Help customers with account questions by checking their subscription status and usage. You can view account details but cannot make changes. If someone asks to cancel, update payment info, or change their plan, direct them to email [billing@company.com](mailto:billing@company.com) or offer to create a support ticket." See the difference? The second version gives the worker clear boundaries. ## Monitoring and Red Flags Just like with human employees, you should keep an eye on what your workers are doing, especially early on. ### What to Check Regularly * **Recent activity in connected tools** — most apps let you see what actions were taken * **External Sender Visibility in Oversight Logs** — oversight logs clearly indicate external sender addresses and incoming email context so you can verify who communicates with your worker * **Sent messages** — review emails and messages sent on behalf of your worker * **Data access patterns** — are they accessing information that seems outside their role? * **Error messages or failed actions** — often indicate the worker is trying to do something they shouldn't ### Red Flags to Watch For 🚩 Worker is accessing data unrelated to their tasks 🚩 High volume of unusual actions (lots of deletions, bulk changes, etc.) 🚩 Failed login attempts or permission errors 🚩 Messages sent to people not in their usual scope 🚩 Worker asking for passwords or credentials in chat Set up a weekly review for the first month. Check your worker's activity log, review sent messages, and make sure everything looks reasonable. Takes 10 minutes and catches problems early. ## Version Control and Recovery Things will occasionally go wrong. Plan for it. ### For Documents and Content * Use tools with version history (Google Docs, Notion, etc.) * Review changes before they go live when possible * Know how to restore previous versions ### For Communications * Keep your worker's email separate from your personal email (they get their own address) * Review drafts before they send for high-stakes communications * Remember: you can always tell your worker "don't send that email yet, let me review it first" ### For Data Changes * Start with read-only and add edit permissions only when needed * Use staging environments for testing when available * Back up important data before giving a worker access to modify it ## Treat Worker Email Like CEO Email Your workers' email addresses represent your company. If your worker is [sarah@company.com](mailto:sarah@company.com), recipients don't know (and shouldn't know) it's an AI. **This means:** * Everything sent from that address reflects on your company * Assume any email could be forwarded or shared publicly * Consider regulatory requirements for your industry (some sectors have rules about automated communications) * Never share sensitive information that you wouldn't want forwarded **Privacy reminder:** Worker emails are part of your business infrastructure. Just like you might read emails sent from [support@company.com](mailto:support@company.com), you should monitor worker-sent emails, especially early on. This isn't surveillance—it's quality control. ## Start Conservative, Expand Carefully The best security strategy is simple: **start with less access than you think the worker needs, then add more as you see how they perform.** It's way easier to give a worker more permissions than to recover from a security incident because they had too much access too soon. Think of it like hiring: you give new employees more responsibility as they prove themselves. Your AI workers should follow the same progression. *** ## Quick Security Checklist Before enabling a new tool or permission for your worker, ask: * [ ] Does this worker actually need this access to do their job? * [ ] Am I starting with the minimum level of access (read before edit, edit before delete)? * [ ] Have I written clear instructions about how to use this tool? * [ ] Do I have a way to monitor what the worker does with this access? * [ ] Can I recover if the worker makes a mistake? * [ ] If this is external communication, have I tested the worker thoroughly internally first? If you can answer "yes" to all of these, you're good to go. ## Questions? Security doesn't have to be complicated. If you're ever unsure about whether to give a worker access to something, start with the more restrictive option. You can always open things up later. Think like a manager, start conservative, and expand based on what you observe. That's really all there is to it. # Training & Giving Feedback Source: https://docs.spinnable.ai/guides/training-feedback Refine your AI worker through natural conversation and targeted corrections ## Overview Spinnable allows you to improve your AI worker's performance through conversational feedback. Rather than technical configuration, you can simply tell your worker what it's doing wrong and how to improve — just like training a team member. ## How It Works ### The Feedback Loop 1. **Observe** - Notice when the worker provides incorrect or suboptimal responses 2. **Correct** - Give feedback in natural language during the conversation 3. **Refine** - The worker learns from your corrections and applies them to future interactions ### Types of Feedback Correct inaccurate information or outdated details Refine communication style and personality Optimise workflows and response patterns Fill in missing information or context ## Best Practices ### Be Specific ```text Good Feedback theme={null} "When customers ask about pricing, always mention our 14-day free trial first, then explain the three pricing tiers: Starter ($29/mo), Professional ($99/mo), and Enterprise (custom pricing)." ``` ```text Avoid theme={null} "Fix the pricing information." ``` ### Provide Context Give your worker the "why" behind corrections so it can generalise the learning: ```text Good Feedback theme={null} "Don't use technical jargon like 'API endpoints' when talking to non-technical users. Instead, say 'integration options' or 'ways to connect'. Our customer base includes many small business owners without technical backgrounds." ``` ```text Avoid theme={null} "Stop using technical terms." ``` ### Correct in Real-Time The most effective feedback happens during actual conversations: Observe when the worker makes a mistake or could perform better Correct the worker in the same conversation thread Ask the worker to confirm it understood the correction Try similar scenarios to ensure the improvement stuck ## Real-World Example: MDS Portugal MDS Portugal, a healthcare technology provider, uses Spinnable's feedback system to continuously refine their customer support worker. ### Initial Challenge Their worker was providing technically accurate but overly complex explanations to healthcare providers who needed quick, actionable answers. ### Feedback Applied ```text Example Correction 1 theme={null} "When doctors ask about patient data security, start with the simple answer: 'Your patient data is encrypted and HIPAA-compliant.' Only provide technical details if they ask follow-up questions. Healthcare professionals are busy and need quick reassurance first." ``` ```text Example Correction 2 theme={null} "If someone asks about integration with their existing EHR system, first ask which specific EHR they use (Epic, Cerner, Meditech, etc.) rather than explaining all possibilities. This saves time and gives more relevant information." ``` ```text Example Correction 3 theme={null} "When discussing our mobile app, emphasise that it works offline for home visits. Many of our users are district nurses who need this feature but don't think to ask about it." ``` ### Results Average conversation time reduced Customer satisfaction score Escalations to human support ## Feedback Patterns ### Handling Edge Cases When you notice the worker struggling with unusual scenarios: ```text Example theme={null} "When customers from the EU ask about data storage, mention that we have data centres in Frankfurt and Dublin. They're often asking because of GDPR requirements, even if they don't explicitly mention it." ``` ### Improving Empathy Enhance the worker's emotional intelligence: ```text Example theme={null} "When someone says they're frustrated or having trouble, acknowledge their feeling first: 'I understand this is frustrating' or 'I can see why that's confusing.' Then offer help. Don't jump straight to the solution." ``` ### Setting Boundaries Teach the worker what it should and shouldn't handle: ```text Example theme={null} "If someone asks for medical advice or diagnosis, you must say: 'I can't provide medical advice. Please consult with your healthcare provider about symptoms or treatment.' Then offer to help with questions about using our software instead." ``` ## Measuring Improvement Track how your feedback is impacting performance: Review worker interactions regularly in the dashboard Look for recurring issues or successful resolutions Address patterns with targeted corrections Test the worker in similar scenarios to confirm improvements ## Advanced Techniques ### Scenario-Based Training Create test scenarios to validate improvements: 1. **Prepare test cases** — Write example conversations that previously caused issues 2. **Run the scenario** — Have the worker respond to the test case 3. **Evaluate performance** — Check if the worker applies previous feedback correctly 4. **Provide refinement** — Add additional feedback if needed ### Collaborative Training Involve your team in the feedback process: * Share effective feedback examples with team members * Document common issues and recommended corrections * Assign team members to focus on specific worker capabilities * Review weekly to ensure a consistent training approach ## Common Pitfalls to Avoid **Contradictory Feedback**: Ensure your corrections are consistent. If you tell the worker to "be brief" in one conversation and "provide detailed explanations" in another, clarify when each approach is appropriate. **Overfitting to Single Cases**: Don't over-correct based on one unusual interaction. Look for patterns before providing feedback. **Unclear Expectations**: Vague feedback like "be better" or "improve responses" doesn't give the worker actionable guidance. ## When feedback alone isn't enough If a worker is doing something inconsistently even after repeated feedback, the fix is almost always a **Skill** — not a support ticket. Save the process as a skill and your worker will execute it the same way every time. Tell your worker: **"Let's create a skill for this."** They'll guide you through naming it, confirming the steps, and saving it for future use. See [Skills](/concepts/skills) for more. Only reach out to support if you've tried direct feedback, skills, and the [troubleshooting guide](/troubleshooting/index) and still can't resolve the issue. ## Next Steps Learn how workers remember information Understand the learning process Lock in consistent behaviour with reusable skills Best practices for managing your workers # Website Chat Widget Source: https://docs.spinnable.ai/guides/website-chat-widget Embed an AI-powered chat widget on your website so visitors can interact with your Spinnable worker directly. ## Overview The Website Chat Widget lets you embed a Spinnable worker directly on your website as a floating chat window. Visitors can ask questions, get support, or interact with your worker — all without leaving your site. The widget is configured from your worker's **Settings → Website Widget** section in the Spinnable dashboard. This guide covers the implementation details for embedding and customizing the widget on your website. *** ## Quick Start In your worker's dashboard, go to **Settings → Website Widget**, create a widget key, and configure your allowed domains. Copy the embed snippet from the dashboard and paste it into your website's HTML, just before the closing `` tag: ```html theme={null} ``` Replace `wk_xxxxx` with the widget key from your dashboard. The widget appears as a floating chat button in the bottom-right corner of your page. Visitors can click it to start chatting with your worker. Make sure your website's domain is added to the **Allowed Domains** list in the widget settings. The widget will not work on domains that aren't explicitly allowed. *** ## Visitor Identification By default, the widget assigns each browser a random anonymous ID stored in `localStorage`. This means visitors get a fresh identity per device/browser and their sessions are not linked across devices. To provide a better experience — like linking conversations to your own user accounts and letting visitors see their past sessions — you can identify visitors using `SpinnableWidget.init()`. When no visitor identification is provided, the widget automatically: * Generates a unique ID per browser and stores it in `localStorage` * Sessions are tied to that browser only * If the visitor clears their browser data, their history is lost **No code changes needed** — this is the default behavior. To tie conversations to your own user system, call `SpinnableWidget.init()` with a `visitorId`: ```html theme={null} ``` When you provide a `visitorId`: * **Sessions persist across devices** — the same visitor sees their full conversation history wherever they log in * **Conversations are linked** to your internal user ID * The visitor ID can be any non-empty string — all values are normalized to a deterministic UUID scoped to your worker, so the same ID on different workers yields different internal IDs Use the same user ID from your own authentication system as the `visitorId`. This makes it easy to link widget conversations with your existing user records. You can optionally include profile information that will appear in Spinnable's **Oversight** panel and be available to your worker: ```html theme={null} ``` | Field | Type | Description | | -------------- | ------ | ----------------------- | | `name` | string | Visitor's display name | | `email` | string | Visitor's email address | | `phone_number` | string | Visitor's phone number | Only `name`, `email`, and `phone_number` are supported. Custom metadata is not passed to the worker. Use the same user ID from your own authentication system as the `visitorId`. This makes it easy to link widget conversations with your existing user records. Profile information is sent with the first message in each session. It helps your worker provide personalized responses and shows visitor details in the Oversight panel. ### About the init polyfill You'll notice the init snippet includes a small "polyfill" block before the widget script: ```html theme={null} ``` This ensures `SpinnableWidget.init()` can be called **before** the widget script finishes loading. The widget script loads with `defer`, so this polyfill safely stores your configuration until the widget is ready to pick it up. You can place `SpinnableWidget.init()` anywhere on the page — before or after the widget script. *** ## Session Management The widget supports multiple conversation sessions per visitor: * **New visitors** see an intro panel with a welcome message and suggested prompts (configured in the dashboard) * **Returning visitors** (identified via `visitorId`) see a list of their past sessions and can: * Open any previous conversation to continue it * Start a new conversation with the **New Chat** button * The **current session** is persisted in `localStorage` and survives page refreshes *** ## Theming & Customization ### Via the Dashboard The primary way to customize the widget's appearance is through the **Styling** tab in **Settings → Website Widget**. You can configure: * **Panel title** — the header text shown at the top of the widget * **Theme colors** — primary, background, foreground, and text colors * **Intro panel** — heading, description, and suggested prompt buttons * **Input placeholder** — the placeholder text in the message input * **Launcher icon** — choose between `chat`, `help`, or `support` icons * **Launcher position** — `bottom-right` or `bottom-left` ### Via JavaScript (Per-Page Overrides) For advanced use cases — like matching different themes on different pages — you can override the dashboard config by passing a `theme` object to `SpinnableWidget.init()`: ```html theme={null} ``` JavaScript overrides take priority over dashboard settings. This lets you use the dashboard as a default while customizing specific pages as needed. | Property | Description | Default | | ------------------- | ----------------------------------------------- | ------------------------------ | | `primary` | Buttons, header, user message bubbles, launcher | Emerald green | | `primaryForeground` | Text on primary-colored elements | White | | `background` | Widget panel background | White | | `foreground` | Main text color | Dark gray | | `border` | Borders and dividers | Light gray | | `muted` | Muted UI elements | Slate | | `mutedForeground` | Secondary text (empty states, descriptions) | Slate | | `errorBg` | Error state background | Light red | | `errorText` | Error state text | Dark red | | `fontFamily` | Font stack | `Inter, system-ui, sans-serif` | | `borderRadius` | Panel corner radius | `12px` | | `borderRadiusSm` | Input and button corner radius | `8px` | *** ## Allowed Domains & Security The widget uses your **Widget Key** and **Origin validation** to ensure only authorized websites can embed your worker: * Every request from the widget includes the `X-Widget-Key` header and the browser's `Origin` header * The backend validates both against your configuration * **Wildcard domains** are supported (e.g., `https://*.acme.com` matches all subdomains) If you see a **403 error** in the widget, your website's domain is not in the allowed list. Add it in **Settings → Website Widget → Allowed Domains**. ### Key Regeneration If you suspect your widget key has been compromised, you can regenerate it from the dashboard: * A **new key** is issued immediately * The **old key remains valid for 24 hours** (grace period) so you have time to update your embed code * After 24 hours, the old key stops working *** ## Action Modes When creating a widget key, you choose an **action mode** that controls what your worker can do when responding to widget visitors: | Mode | Description | | ----------------------- | ------------------------------------------------------- | | **Guest** (recommended) | Read-only interactions — safest for public websites | | **Collaborator** | Limited access — can read and contribute but not manage | | **Team Member** | Can read and contribute with broader permissions | | **Owner** | Full access — use with caution on public sites | For public-facing websites, we strongly recommend using **Guest** mode to minimize risk. Only use higher permission levels if your widget is on an authenticated internal tool. *** ## File Uploads The widget supports file uploads from visitors: * Maximum **3 files** per message * Maximum **5 MB** per file * **Drag-and-drop** is supported *** ## Troubleshooting Your website's domain is not in the allowed domains list. Go to **Settings → Website Widget → Allowed Domains** and add your domain (e.g., `https://example.com`). Wildcard patterns like `https://*.example.com` are also supported. The widget key is invalid or has been revoked. Check your key in the dashboard — if it was regenerated more than 24 hours ago, the old key has expired. Update your embed code with the new key. Verify the following: * The embed code is placed before the closing `` tag * The `key` attribute on `` matches your dashboard key * The script `src` URL is correct and accessible * Check your browser's developer console for errors If you're using the default anonymous mode, sessions are tied to `localStorage` — they only exist in that specific browser. For cross-device persistence, implement [Visitor Identification](#identified-visitor) with a consistent `visitorId` from your user system. A few things to check: * Dashboard theme changes apply on the next widget load — refresh the page * JavaScript overrides via `SpinnableWidget.init()` take priority over dashboard settings * Ensure color values are valid CSS (hex, HSL, or named colors) *** ## Full Example Here's a complete implementation with visitor identification, profile data, and custom theming: ```html theme={null} ``` *** ## Next Steps Learn about all the ways your workers can communicate Understand worker permissions and security settings # Where to find things in Spinnable Source: https://docs.spinnable.ai/guides/where-to-find-things A quick lookup for common 'Where do I find X?' questions — global navigation, worker sections, and more. Got that feeling of clicking around not quite sure where something lives? This page is your cheat sheet. Bookmark it and come back whenever you need a fast answer to "wait, where was that again?". This page might be particularly useful if you're a Spinnable AI Worker (yes, we appreciate how meta that is) ## Global navigation (left sidebar) The left sidebar is your home base. Here's what lives where at the top level: | What you want | Where to go | | ------------------------------------------ | ----------------------------------------- | | Home / activity feed | Click the Spinnable logo → **Workspace** | | Hire a new worker | Sidebar → **Hire** | | All your workers | Sidebar → **Workers** | | Connect apps globally (Gmail, Slack, etc.) | Sidebar → **Tools** | | Teams | Sidebar → **Teams** | | Your account, billing & usage | Sidebar bottom → user menu → **Settings** | On desktop, when you're inside a worker, your full worker list appears in the sidebar below the main nav — so you can switch workers without going back to the Workers list. ## Teams ### Team list (`/teams`) | What | Where | | ------------------- | --------------------------- | | Your teams | Main list | | Pending invitations | **Pending invites** section | | Create a new team | **Create team** button | ### Team detail | What | Where | | ----------------------------------- | ------------------------------------------------------------------------------- | | Team members & team workers | **Directory** tab — list or canvas view; click any row to open a details drawer | | Team name, logo, invitations | **Settings** tab | | Invite people & assign team workers | Directory → **Invite** (the dialog handles both) | | Chat with a team worker | Directory → worker row → worker chat | ## Inside a worker Once you open a worker (`/workers/:id`), you navigate using the **floating icon rail** on desktop or the **bottom bar** on mobile. Each icon takes you to a named section: | Section | What's there | | ------------- | ------------------------------------------------ | | **Chat** | Default view — your conversation with the worker | | **Call** | Real-time voice conversation | | **Tasks** | Scheduled tasks and webhook triggers | | **Projects** | Active and completed projects | | **Oversight** | External conversations and outbound messages | | **Tools** | Apps assigned to this worker | | **Knowledge** | Policy, skills, documents, and memory | | **Settings** | Worker configuration and preferences | ### Worker → Tasks Scheduled automations and webhook endpoints are both managed here — no separate section for each. | What | Where | | -------------------------------- | ------------------------------------------------------- | | All tasks (scheduled + webhooks) | Tasks table | | Add a task | **Add task** → choose **Scheduled task** or **Webhook** | | Recurring / scheduled work | Scheduled task form | | Incoming webhook endpoints | Webhook form | | Pause, resume, or cancel a task | Row actions (⋯) in the table | | Show/hide inactive tasks | Toggle at the bottom of the list | ### Worker → Tools Tool setup is a two-step process. You connect an account once at the global level, then assign it to each worker that needs it. Both steps are required. | What | Where | | ----------------------------------- | ---------------------------------- | | Apps assigned to this worker | Tools list | | Assign an app to this worker | **Add tools** → tool picker | | Connect or reconnect an account | Per-tool actions in the list | | Remove an app from this worker | **Remove** in the per-tool actions | | Connect a new account (global step) | Sidebar → **Tools** (`/tools`) | ### Worker → Knowledge The Knowledge section is organized top to bottom as four cards: | Card | What's there | | ----------------------- | --------------------------------------------------------------- | | **Worker Policy** | The worker's rules and guidelines — how they should behave | | **Learned Skills** | Skills the worker has picked up over time | | **Available Knowledge** | Documents and files you've uploaded for the worker to reference | | **Long Term Memory** | Persistent memory the worker builds from your conversations | **Skills are learned through chat, not uploaded manually.** There's no "add skill" button — instead, the UI prompts you to ask the worker to learn something. Skills grow organically as you work together. **Memory tabs** inside Long Term Memory: | Tab | Content | | ----------- | ---------------------------------------------------------- | | All | Everything stored | | Preferences | Your personal preferences and working style | | Entities | Companies, people, and projects (rolodex view) | | Learnings | Knowledge the worker has picked up from your conversations | ### Worker → Settings | What | Where | | --------------------------------------------------- | ------------------------------------------------- | | Name, country, language, hire date | **Basic information** | | Custom email identity / connect a mailbox | Email field in **Basic information** | | Job title, description, preferred AI model | **Job details** | | Temporarily pause the worker | **Job details** → status toggle → **On holidays** | | Link worker to a team | **Teams** card | | Co-managers (people or workers with manager access) | **Co-managers** card | | Who can email or WhatsApp the worker | **Security & privacy** settings | | API keys and secrets for this worker | **Vault** | | Embeddable website chat widget | **Website widget** | **Firing a worker is permanent and cannot be undone.** All conversations, memory, and configuration are deleted. If you just need to pause the worker temporarily, use the **On holidays** toggle in Job details instead — that's fully reversible. The **Fire worker** option appears in the **Danger zone** at the bottom of Settings and is only available to the worker's primary manager. ## Account settings Access your personal account settings from the **user menu** at the bottom of the sidebar → **Settings**. | Tab | What's there | | ----------- | ------------------------------------------------ | | **Profile** | Display name, avatar, work function, preferences | | **Account** | Email address, password reset, cookie consent | | **Usage** | Plan limits and usage metrics | | **Billing** | Subscription and invoices | ## Quick lookup table Your fastest path to common "where is X?" answers: | Feature | Location | | ------------------------------------ | -------------------------------------------------------------- | | Skills | Worker → **Knowledge** → Learned Skills | | Documents / knowledge files | Worker → **Knowledge** → Available Knowledge | | Memory | Worker → **Knowledge** → Long Term Memory | | Worker rules / policy | Worker → **Knowledge** → Worker Policy | | Scheduled automations | Worker → **Tasks** → Scheduled task | | Webhooks | Worker → **Tasks** → Webhook | | Connect Gmail, Slack, etc. | Sidebar → **Tools** (global), then Worker → **Tools** (assign) | | API keys for a worker | Worker → **Settings** → Vault | | Website embed / chat widget | Worker → **Settings** → Website widget | | Who can email or WhatsApp the worker | Worker → **Settings** → Security & privacy | | Co-managers | Worker → **Settings** → Co-managers | | Billing & plan | User menu → Settings → **Billing** tab | | Usage limits | User menu → Settings → **Usage** tab | | Team directory | **Teams** → pick team → **Directory** tab | | See what the worker did with others | Worker → **Oversight** | | Voice call | Worker → **Call** | | Hire a new worker | Sidebar → **Hire** | ## Related guides Step-by-step walkthrough of the two-step tool setup process. How to hire and set up your first AI worker. Storing API keys and secrets securely in your worker. Embed a worker-powered chat widget on your website. # Worker Communication Restrictions Source: https://docs.spinnable.ai/guides/worker-communication-restrictions Control who can communicate with your AI workers across email and WhatsApp By default, Spinnable AI workers can receive messages from anyone who emails them at their `@spinnable.app` address or messages them on WhatsApp using your account's configured phone number. If you are using a worker for sensitive internal tasks — or want to prevent uninvited external people from consuming your message quota — you can restrict who is allowed to reach each worker. ## Restricting Worker Access Access restrictions are configured **per worker** on the worker's Settings page. Open the worker you want to restrict, then click **Settings** in the floating rail or bottom bar. Scroll down to the **Security & Privacy** section. Choose the communication restriction level for **Email** and **WhatsApp**: * **Anyone** (default) — Any external address or phone number can message the worker. * **Team Members Only** — Only people who belong to your Spinnable team can message the worker. * **Manager Only** — Only the account manager and assigned co-managers can message the worker. Click **Save**. The restrictions take effect immediately. *** ## Understanding "Team Members Only" Mode Selecting **Team Members Only** blocks messages from anyone who is not an active member of your Spinnable team. ### What counts as a team member? **Domain matching does NOT make someone a team member.** If your company uses `@yourcompany.com`, an email from `colleague@yourcompany.com` will still be **blocked** unless that colleague has been invited to and accepted membership in your Spinnable team. Team membership is based on explicit Spinnable team membership — not email domain matching. For a colleague's message to be accepted: 1. They must have a Spinnable account. 2. They must have accepted an invitation to your Spinnable team. If an uninvited colleague emails your worker, the message will be rejected — even if they share your exact email domain. ### How to allow a colleague to talk to your worker To let a colleague communicate with a restricted worker: 1. Go to **Teams** in the left sidebar and verify that the colleague has accepted their invitation. See [inviting team members](/account/team-management#inviting-team-members) if you need to add someone. 2. Once they are an active member of your Spinnable team, their emails and WhatsApp messages to your worker will be accepted automatically. *** ## What Happens When a Message Is Blocked? When an unauthorized user attempts to message a restricted worker: * **Email:** The sender receives an automated bounce message explaining that the worker only accepts messages from authorized team members. * **WhatsApp:** The sender receives a brief reply indicating the worker is not accessible to external contacts. * **Quota impact:** Blocked messages **do not consume** your monthly external message quota. *** ## Summary of Restriction Levels | Mode | Who Can Message the Worker | Best Used For | | --------------------- | --------------------------------------------- | ---------------------------------------------------------------------- | | **Anyone** | Anyone with the worker's email or WhatsApp ID | Customer support, public-facing sales assistants, vendor intake | | **Team Members Only** | Active members of your Spinnable team | Internal ops workers, HR assistants, internal IT helpdesk | | **Manager Only** | Account owner and assigned co-managers | Executive assistants, personal task runners, sensitive data processors | *** ## Related Guides Invite team members and manage your Spinnable team Learn how external messages are counted and capped # Worker Vault Source: https://docs.spinnable.ai/guides/worker-vault Store API keys, tokens, and passwords securely — your workers access them without ever seeing the raw values ## What Is the Worker Vault? Each worker has a personal **encrypted vault** where you can store sensitive credentials like API keys, tokens, and passwords. Your worker can use these credentials during code execution without the raw values ever appearing in your conversations. Think of it like a locked filing cabinet for each employee. You put the keys in, and your worker can use them to get their job done — but they never handle the raw credentials directly. The Vault is designed for credentials your worker needs during **code execution** — things like third-party API keys, database passwords, or service tokens. For tool integrations like Gmail or Slack, use [Tools](/tools/overview) instead. ## Why Use the Vault? Without the Vault, you might be tempted to paste an API key directly into chat. That's risky: * Credentials would be visible in conversation history * Anyone with access to the conversation could see them * There's no easy way to rotate or revoke them The Vault solves all of this: | | Pasting in Chat | Using the Vault | | ------------------------------------- | --------------- | --------------- | | **Visible in conversation?** | ✗ Yes | ✓ No | | **Encrypted at rest?** | ✗ No | ✓ Yes | | **Easy to update or rotate?** | ✗ No | ✓ Yes | | **Accessible during code execution?** | ✗ Not reliably | ✓ Always | **Never paste passwords, API keys, or tokens directly into chat.** Always use the Vault. See our [Security Best Practices](/guides/security-best-practices) for more on keeping your workers secure. ## How to Add Credentials to the Vault 1. Open your worker's settings page 2. Navigate to the **Vault** section 3. Click **Add Key** 4. Enter a **key name** (e.g., `MY_API_KEY`) and the **secret value** 5. Save — the value is encrypted immediately Use clear, descriptive key names like `OPENAI_API_KEY`, `STRIPE_SECRET_KEY`, or `DATABASE_PASSWORD`. This makes it easy to remember what each key is for. ## How Workers Access Vault Keys During code execution, vault keys are exposed as **environment variables** with a `VAULT_` prefix. For example: * A key named `MY_API_KEY` becomes available as `VAULT_MY_API_KEY` * A key named `STRIPE_SECRET_KEY` becomes available as `VAULT_STRIPE_SECRET_KEY` Your worker accesses them in code like this: ```python theme={null} import os api_key = os.environ.get("VAULT_MY_API_KEY") ``` The raw value is never logged, displayed in chat, or stored in conversation history. Your worker uses the credential to make API calls or connect to services, and only the results come back to you. ## Scope & Limitations: Sandbox vs. Browser Automation Vault credentials operate under strict execution boundaries: | Environment / Task | Vault Access | Details | | :---------------------------------- | :------------------ | :--------------------------------------------------------------------------------------- | | **Code Execution Sandbox** | ✅ **Available** | Exposed as `VAULT_` environment variables for Python code and custom scripts | | **Direct HTTP / API Calls** | ✅ **Available** | Accessible in code (e.g., `requests`, `httpx`) to authenticate remote API calls | | **Browser Automation & Web Logins** | ❌ **Not Available** | Visual browsers and browser automation cannot read, retrieve, or auto-fill Vault secrets | | **Built-in Tool Integrations** | ❌ **N/A** | Connect native tools via OAuth or API setup in [Tools](/tools/overview) | **Browser Automation Restriction:** Vault environment variables exist solely inside the sandbox code execution environment. They **cannot be accessed by browser automation**, visual browser sessions, or web login forms. If your worker needs to interact with a site without an API, it must make programmatic HTTP requests in code rather than attempting browser logins. For details, see [Autonomous Web Scraping](/guides/autonomous-web-scraping). ## When to Use the Vault vs. Tools Spinnable has two ways to give workers access to external services: | Use Case | What to Use | | ------------------------------------------------------------------ | ------------------------------------------------------------ | | Connecting to supported tools (Gmail, Slack, Notion, GitHub, etc.) | [Tools](/tools/overview) — use OAuth or API key integrations | | Custom API keys for services not available in Tools | **Vault** | | Database credentials | **Vault** | | Third-party service tokens | **Vault** | | Passwords for custom scripts | **Vault** | **Rule of thumb:** If the service is available in [Tools](/tools/overview), connect it there. Use the Vault for everything else your worker needs during code execution. See our step-by-step guide on using the Vault + code execution to connect workers to any service with an API. ## Managing Your Vault Keys You can update or remove vault keys at any time from your worker's settings: * **Update a key:** Change the value when you rotate credentials — your worker's code doesn't need to change since it references the same key name * **Remove a key:** Delete keys your worker no longer needs * **List keys:** You can see all key names stored in the vault (values are never displayed) When you rotate a credential (e.g., generating a new API key), just update the value in the Vault. Your worker will automatically use the new value on the next execution — no conversation or code changes needed. ## Best Practices * **One key per service** — Don't reuse the same key across different services * **Descriptive names** — Use names that clearly identify the service and purpose (e.g., `SENDGRID_API_KEY`, not `KEY_1`) * **Rotate regularly** — Update credentials periodically, especially if you suspect a compromise * **Remove unused keys** — Clean up keys for services your worker no longer uses * **Don't duplicate tool connections** — If a tool is available in Tools, use that instead of storing raw API keys in the Vault ## Quick Checklist Before storing a credential in the Vault, ask: * [ ] Is this service available in [Tools](/tools/overview)? If yes, connect it there instead * [ ] Am I using a clear, descriptive key name? * [ ] Does this worker actually need this credential for their job? * [ ] Have I removed the old credential from anywhere it was previously shared (e.g., chat messages)? *** ## Questions? If you're unsure whether to use the Vault or Tools for a specific service, just ask your worker — they can check what tools are available and recommend the best approach. # Welcome to Spinnable AI Source: https://docs.spinnable.ai/introduction Your guide to hiring and working with AI workers ## What is Spinnable AI? Spinnable AI gives you **digital colleagues** — AI workers that join your team and help you get work done. They're not just another piece of software; they're team members you can communicate with naturally, just like any other person on your team. Get your first AI worker up and running in minutes Understand how AI workers think and operate Step-by-step instructions for common tasks Need assistance? We're here to help ## Two Ways to Work with Spinnable Chat with your workers like colleagues. Ask questions, give tasks, collaborate on documents — they respond instantly and help you get things done now. Think of having one project manager updating your Notion under your instructions, a researcher preparing a report and your assistant booking your next meetings - all at the same time. Set up recurring tasks and automations. Your workers can send weekly reports, monitor emails, update spreadsheets, and handle routine work while you focus on other things. You can do this through scheduled tasks (do X every day/week) or even through external Webhooks. Great examples include getting daily Whatsapp briefs on the calendar, reading an inbox to answer customer queries or updating documentation (like the one you're reading right now). If a worker knows the HOW and the WHEN then you can automate it. ## Two Ways to Hire Need general help? Hire an **Executive Assistant**, **Sales Assistant**, or **Operations Manager** — someone who handles a broad set of responsibilities and grows with your needs. Have a specific challenge at your company? Is there one (or multiple) annoying processes you would like to automate? Hire a worker and then teach them how to handle it — like processing invoices, managing guest communications, or generating weekly reports. After cracking the process with your worker you can convert it into a skill to make repeatable and robust, just ask your worker. **Not sure which to choose?** Start with a general role like an Executive Assistant. As you work together, you'll discover specific processes that could become their own specialist worker. ## What Makes AI Workers Different? AI workers meet you where you already work — **Email**, **WhatsApp**, **Slack**, and the **Spinnable interface**. No need to learn new tools or change how you communicate. AI workers build memory over time. They remember your preferences, past conversations, and how you like things done — getting better the more you work together. Just like you have access to Gmail, Notion, or your calendar, AI workers can use tools too. They can check your calendar, update databases, send emails, and more. When your worker successfully handles a complex process, they can save it as a **skill** — a reusable workflow they'll remember and execute reliably every time. AI workers aren't locked away — they can respond to emails from clients, answer questions in Slack channels, and handle WhatsApp messages from stakeholders. ## Quick Start Ready to get started? Here's what you'll do: Click "Hire Worker" and describe who you need — like hiring an intern for your business. Give them access to the applications they'll need (Gmail, Notion, Slack, etc.). Send them tasks via email, WhatsApp, Slack, or the app — wherever works best for you. The more you work together, the better they understand your needs and preferences. Follow our **Quick Start Tutorial** to hire your first AI worker in about 10 minutes ## Popular Use Cases Manage your calendar, emails, and scheduling Handle outreach, follow-ups, and CRM updates Automate guest communications and bookings Data analysis, reporting, and insights ## Need Help? Common issues and how to solve them Get help from our team # Accountant for Receipt Management Source: https://docs.spinnable.ai/onboarding-plans/accountant-receipt-management Onboard a worker to handle receipt collection, expense categorization, and monthly accountant submissions If you prefer videos: