# See how Mug works - Demo | Mug

Build custom agents, automation with real code, web interfaces, & Slack apps with Claude, Codex, & Cursor. Deploy to Cloudflare.

Pick a company profile
    
          
          Residential general contractor
        
          
          Property management group
        
          
          Multi-location dental practice
        
          
          Wholesale HVAC & plumbing distributor
        
          
          Regional staffing & admin agency
        
    
          
            
            
              Renwick Builders
              Residential general contractor
            
          
          
            12 employees, $2M/yr revenue
            Current tools: QuickBooks, Google Calendar, text messages
            Pain points: Scheduling, dispatch, customer follow-up, crew timesheets
            Mug plan: Starter ($99/mo) - 15-min sync intervals, 250K database records, 1M operations/mo, 500 SMS sends — covers a 12-person crew with room to spare
          
        
          
            
            
              Stonebridge Property Mgmt
              Property management group
            
          
          
            8 employees, $4M/yr revenue
            Current tools: AppFolio, spreadsheets, tenant emails
            Pain points: Maintenance requests, vendor coordination, lease renewals, tenant communication
            Mug plan: Starter ($99/mo) - 15-min syncs from AppFolio, 250K records for tenant and maintenance history, 1,500 emails/mo for lease notices and vendor coordination
          
        
          
            
            
              Clearpoint Dental Group
              Multi-location dental practice
            
          
          
            65 employees, $10M/yr revenue
            Current tools: Dentrix (per-office), separate Google Sheets for reporting
            Pain points: Cross-location reporting, staff scheduling, patient recall campaigns
            Mug plan: Pro ($299/mo) - 5-min sync intervals across 5 Dentrix instances, 2.5M records for patient history, 5,000 emails/mo for recall campaigns, 50K AI credits for cross-location reporting, full white-label surfaces
          
        
          
            
            
              Pacific Ridge Supply
              Wholesale HVAC & plumbing distributor, regional
            
          
          
            110 employees, $40M/yr revenue
            Current tools: Legacy ERP (Epicor/SAP B1), Salesforce for CRM
            Pain points: Reorder alerts, rep territory reporting, inventory visibility
            Mug plan: Pro ($299/mo) - 5-min ERP syncs, 2.5M records across 3 warehouses of inventory data, 10M operations/mo for reorder alerts, 50K AI credits for rep territory reports, full white-label for customer-facing portals
          
        
          
            
            
              Vanguard Workforce
              Regional staffing & admin agency
            
          
          
            300 employees, $100M/yr revenue
            Current tools: Bullhorn ATS, custom Access database for compliance, Excel for margin tracking
            Pain points: Timesheet reconciliation, compliance doc tracking, client approval workflows
            Mug plan: Business ($599/mo) - Custom root domain (portal.vanguardworkforce.com), 1-min sync intervals from Bullhorn, 25M records for compliance archives, 50M operations/mo, 2,500 SMS sends for placement confirmations, 100K AI credits
          
        
  

  
    Pick a use case
    
          
          HR & Team Ops
        
          
          Sales & Customers
        
          
          Finance & Billing
        
          
          Operations & Logistics
        
          
          Reporting & Insights
        
    
      
      
          
          
         30 ORDER BY days_dormant DESC\",\n    \"columns\": [\"Account\", \"Rep\", \"Last Order\", \"Days Dormant\"],\n    \"actions\": [{ \"label\": \"Draft Restock Outreach\", \"workflow\": \"restock-outreach\" }]\n  }]\n}","confirmation":"✓ Surface sales-dashboard live at pacificridge.mug.work/sales-dashboard"},"viz":{"surfaceName":"sales-dashboard","surfaceType":"portal","access":"auth","columns":["Account","Rep","Last Order","Dormant"],"rows":[{"Account":"Wilson Plumbing","Rep":"Jake","Last Order":"Apr 8","Dormant":"62 days"},{"Account":"Metro Mechanical","Rep":"Elena","Last Order":"Apr 22","Dormant":"48 days"}]}}},{"from":"builder","text":"looks good. deploy it."},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every monday at 7am\nRegistering surface users...\n  jake.r@pacificridgesupply.com\n  elena.s@pacificridgesupply.com\n  greg.v@pacificridgesupply.com","confirmation":"✓ Deployed to pacificridge.mug.work"},"viz":{"deployUrl":"pacificridge.mug.work","deployItems":[{"label":"sources","value":"salesforce","status":"syncing"},{"label":"workflows","value":"restock-outreach","status":"active"},{"label":"surfaces","value":"sales-dashboard","status":"live"}]}}},{"from":"exchange","channel":"text","exchange":[{"name":"Nate","text":"greg, dormant account outreach is live. monday mornings it auto-emails stale accounts with personalized restock suggestions. reps can also trigger from here: pacificridge.mug.work/sales-dashboard"},{"name":"Greg","role":"VP of Sales","text":"wilson plumbing is on that list right? jake needs to follow up today"}]}]}},"vanguard":{"text":"Apex Manufacturing posted a warehouse req three weeks ago and has gone quiet. Today Priya checks a spreadsheet, notices the gap, writes a generic email, and asks Latoya to pull candidate profiles manually. Three people, no personalization, and the email doesn't reference the original req or any candidates. Ops coordinator Devon decides to automate client follow-ups himself.","resolution":"Before: three people, no personalization, generic emails. Now: the client dashboard flags stale requisitions automatically. AI drafts a follow-up referencing the original req and suggests three candidates from the pipeline. Kevin at Apex gets an email with profiles and a scheduling link.","characters":[{"name":"Priya","role":"Account manager"},{"name":"Latoya","role":"Recruiter"},{"name":"Kevin","role":"Apex hiring manager"}],"buildStory":{"plan":"Devon is going to try connecting Vanguard's Bullhorn ATS — where they manage clients, requisitions, and candidate pipelines — and see if he can get the client and placement data into a local database. If that works, he wants to build a follow-up system that flags stale requisitions, drafts personalized outreach with candidate suggestions, and emails the hiring manager.","messages":[{"from":"exchange","channel":"slack","exchange":[{"name":"Devon","role":"Ops coordinator","text":"priya, apex manufacturing went quiet on that warehouse req from three weeks ago. i'm going to try building an automated follow-up system so we stop losing these"},{"name":"Priya","role":"Account manager","text":"please do, we lose at least two reqs a month to dropped follow-ups"}]},{"from":"system","text":"Launching Claude Code..."},{"from":"builder","text":"i want to build a system that automatically follows up with clients who have open job requisitions that haven't been touched in a while. we use bullhorn for everything. can you set it up with mug?"},{"from":"agent","text":"Found it — github.com/mugwork/mug. Installing the CLI now.","build":{"type":"login","terminal":{"code":"$ npm install -g @mugwork/mug\n✓ Installed @mugwork/mug v1.0.0\n\n$ mug login\n✓ Logged in as devon@vanguardworkforce.com\n\n$ cd vanguard-workforce\n$ mug sync","confirmation":"✓ Workspace synced — 2 connectors, 1 workflow, 1 surface"},"viz":{"workspaceName":"vanguard-workforce"}}},{"from":"agent","text":"Reading CLAUDE.md and workspace skills..."},{"from":"builder","text":"can you pull in our client requisitions and candidate pipeline from bullhorn? i need to see which reqs have gone stale"},{"from":"agent","text":"Reading .claude/skills/connector/SKILL.md..."},{"from":"agent","text":"Absolutely. I'll sync requisitions and candidates from Bullhorn."},{"from":"agent","text":"Connecting Vanguard Bullhorn...","build":{"type":"source","terminal":{"code":"source(\"bullhorn\", {\n  clientId: secrets.BH_CLIENT_ID,\n  clientSecret: secrets.BH_CLIENT_SECRET,\n  restUrl: \"https://rest.bullhornstaffing.com\",\n  tables: [\"requisitions\", \"candidates\"]\n});","confirmation":"✓ Synced 2 tables from Bullhorn → vanguard-sales (1,847 records)"},"viz":{"sourceName":"bullhorn","sourceIcon":"cloud-download","databaseName":"vanguard-sales","tables":[{"name":"requisitions","pk":"id","rows":247},{"name":"candidates","pk":"id","rows":1600}]}}},{"from":"agent","text":"Sync is set up. How often should I keep this data in sync? Every minute, every 15 minutes, or daily?"},{"from":"builder","text":"5 minutes sounds right"},{"from":"agent","text":"✓ Scheduled: sync every 5 minutes."},{"from":"builder","text":"ok nice. so can you make it find reqs that haven't been updated in 14 days, draft a follow-up email that mentions the original req and suggests matching candidates, and send it to the hiring manager?"},{"from":"agent","text":"Reading .claude/skills/workflow/SKILL.md..."},{"from":"agent","text":"Yes — I'll build a workflow that finds stale reqs, matches candidates from the pipeline, AI-drafts a personalized follow-up, and emails the hiring manager."},{"from":"agent","text":"Building the req follow-up workflow...","build":{"type":"workflow","terminal":{"code":"workflow(\"follow-up-stale-reqs\", {\n  trigger: \"schedule\",\n  schedule: \"every weekday at 8am\",\n  steps: [\n    query(\"SELECT r.*, c.name as candidate_name, c.skills FROM requisitions r LEFT JOIN candidates c ON c.skills LIKE '%' || r.role || '%' WHERE r.updated_at 
          
          
        
          
          
        
          
          
         datetime('now', '-7 days')\"),\n    query(\"SELECT crew_name, SUM(hours) as total_hours, ROUND(SUM(hours)/40.0*100) as utilization FROM crew_hours WHERE week = strftime('%W', 'now', '-7 days') GROUP BY crew_name\"),\n    ai(\"Write a weekly business report for Renwick Builders. Jobs completed: {{jobs_completed}}, Revenue: {{revenue}}. Crew utilization: {{crew_data}}. Flag any crew below 70% utilization or overdue invoices.\"),\n    email(\"mike@renwickbuilders.com,sandra.k@renwickbuilders.com\", \"Weekly Report — Renwick Builders\", \"{{ai.response}}\")\n  ]\n});","confirmation":"✓ Workflow weekly-report built (4 steps: query → query → ai → email)"},"viz":{"workflowName":"weekly-report","steps":[{"label":"Pull job metrics","type":"query","icon":"database"},{"label":"Pull crew hours","type":"query","icon":"database"},{"label":"Write summary","type":"ai","icon":"sparkles"},{"label":"Email report","type":"email","icon":"mail"}]}}},{"from":"builder","text":"and a dashboard where mike can see the metrics anytime, not just the weekly email."},{"from":"agent","text":"Reading .claude/skills/surface/SKILL.md..."},{"from":"agent","text":"Creating the KPI dashboard...","build":{"type":"surface","terminal":{"code":"{\n  \"name\": \"kpi-dashboard\",\n  \"type\": \"portal\",\n  \"auth\": \"workspace\",\n  \"sections\": [{\n    \"type\": \"table\",\n    \"source\": \"SELECT crew_name, jobs_this_week, hours, utilization, revenue FROM crew_summary ORDER BY utilization DESC\",\n    \"columns\": [\"Crew\", \"Jobs\", \"Hours\", \"Utilization\", \"Revenue\"]\n  }]\n}","confirmation":"✓ Surface kpi-dashboard live at renwick.mug.work/kpi-dashboard"},"viz":{"surfaceName":"kpi-dashboard","surfaceType":"portal","access":"auth","columns":["Crew","Jobs","Hours","Utilization"],"rows":[{"Crew":"Mike's crew","Jobs":"4","Hours":"156","Utilization":"97%"},{"Crew":"Dan's crew","Jobs":"2","Hours":"98","Utilization":"61%"}]}}},{"from":"builder","text":"looks good. deploy it."},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every monday at 7am\nRegistering surface users...\n  mike@renwickbuilders.com\n  sandra.k@renwickbuilders.com","confirmation":"✓ Deployed to renwick.mug.work"},"viz":{"deployUrl":"renwick.mug.work","deployItems":[{"label":"sources","value":"airtable","status":"syncing"},{"label":"workflows","value":"weekly-report","status":"active"},{"label":"surfaces","value":"kpi-dashboard","status":"live"}]}}},{"from":"exchange","channel":"text","exchange":[{"name":"Alex","text":"mike, weekly report is live. you and sandra get it every monday at 7am — jobs, revenue, crew utilization, flagged issues. live dashboard here: renwick.mug.work/kpi-dashboard"},{"name":"Mike","role":"Owner","text":"dan's crew is at 61%?? i need to talk to him"}]}]}},"stonebridge":{"text":"Lisa has no idea how the portfolio performed this week. Occupancy, maintenance response times, rent collection — all in different AppFolio screens. By the time she checks everything, the morning is gone. Office manager Maya decides to build an automatic weekly report herself.","resolution":"Before: an hour checking five different screens. Now: every Monday at 8am, Lisa and Reggie get a text with the portfolio summary — occupancy, maintenance trends, rent collection, flagged issues. Maya built it in an afternoon.","characters":[{"name":"Lisa","role":"Owner"},{"name":"Maria","role":"Maintenance lead"},{"name":"Reggie","role":"Leasing agent"}],"buildStory":{"plan":"Maya is going to connect Stonebridge's AppFolio — where they track units, tenants, maintenance, and payments — and sync everything into a local database. If that works, she wants to build a weekly report that aggregates portfolio metrics and texts the summary to Lisa and Reggie every Monday.","messages":[{"from":"exchange","channel":"slack","exchange":[{"name":"Maya","role":"Office manager","text":"lisa, what if i could get you a weekly report that shows occupancy, maintenance response times, and rent collection all in one place? delivered automatically?"},{"name":"Lisa","role":"Property manager","text":"that would save me an hour every monday morning. go for it"}]},{"from":"system","text":"Launching Claude Code..."},{"from":"builder","text":"i want to build a weekly portfolio report for our apartment buildings using mug. it should pull occupancy, maintenance, and payment data and send a summary every monday. can you help?"},{"from":"agent","text":"Found it — github.com/mugwork/mug. Installing the CLI now.","build":{"type":"login","terminal":{"code":"$ npm install -g @mugwork/mug\n✓ Installed @mugwork/mug v1.0.0\n\n$ mug login\n✓ Logged in as maya@stonebridgeproperty.com\n\n$ cd stonebridge-property\n$ mug sync","confirmation":"✓ Workspace synced — 3 connectors, 4 workflows, 4 surfaces"},"viz":{"workspaceName":"stonebridge-property"}}},{"from":"agent","text":"Reading CLAUDE.md and workspace skills..."},{"from":"builder","text":"can you pull in our unit occupancy, maintenance tickets, and payment records from appfolio?"},{"from":"agent","text":"Reading .claude/skills/connector/SKILL.md..."},{"from":"agent","text":"Absolutely. I'll sync units, maintenance, and payments from AppFolio."},{"from":"agent","text":"Connecting Stonebridge AppFolio...","build":{"type":"source","terminal":{"code":"source(\"appfolio\", {\n  apiKey: secrets.APPFOLIO_KEY,\n  baseUrl: \"https://stonebridge.appfolio.com/api/v2\",\n  tables: [\"units\", \"maintenance_requests\", \"payments\"]\n});","confirmation":"✓ Synced 3 tables from AppFolio → stonebridge-reports (398 records)"},"viz":{"sourceName":"appfolio","sourceIcon":"cloud-download","databaseName":"stonebridge-reports","tables":[{"name":"units","pk":"id","rows":42},{"name":"maintenance_requests","pk":"id","rows":114},{"name":"payments","pk":"id","rows":242}]}}},{"from":"agent","text":"Sync is set up. How often should I keep this data in sync? Every 15 minutes, daily, or weekly?"},{"from":"builder","text":"daily sounds right"},{"from":"agent","text":"✓ Scheduled: sync daily."},{"from":"builder","text":"ok now can you build a report that runs every monday and texts lisa and reggie the portfolio summary? occupancy, maintenance response time, rent collection, and flag anything that looks bad?"},{"from":"agent","text":"Reading .claude/skills/workflow/SKILL.md..."},{"from":"agent","text":"Yes — I'll build a weekly report that aggregates all three data sources, AI-writes a summary with flags, and texts it out Monday mornings."},{"from":"agent","text":"Building the weekly portfolio report...","build":{"type":"workflow","terminal":{"code":"workflow(\"weekly-portfolio-report\", {\n  trigger: \"schedule\",\n  schedule: \"every monday at 8am\",\n  steps: [\n    query(\"SELECT COUNT(*) as occupied, COUNT(*) FILTER (WHERE status='vacant') as vacant, ROUND(COUNT(*) FILTER (WHERE status='occupied')*100.0/COUNT(*)) as occupancy_pct FROM units\"),\n    query(\"SELECT AVG(julianday(resolved_at) - julianday(created_at)) as avg_response_days, COUNT(*) FILTER (WHERE status='open') as open_tickets FROM maintenance_requests WHERE created_at > datetime('now', '-7 days')\"),\n    ai(\"Write a weekly portfolio report for Stonebridge Property. 42 units, occupancy: {{occupancy_pct}}%. Maintenance: {{avg_response_days}} day avg response, {{open_tickets}} open tickets. Flag any vendor with slow turnaround or units with repeated issues.\"),\n    sms(\"{{lisa_phone}},{{reggie_phone}}\", \"Weekly Portfolio Report: {{ai.response}}\")\n  ]\n});","confirmation":"✓ Workflow weekly-portfolio-report built (4 steps: query → query → ai → sms)"},"viz":{"workflowName":"weekly-portfolio-report","steps":[{"label":"Pull occupancy","type":"query","icon":"database"},{"label":"Pull maintenance","type":"query","icon":"database"},{"label":"Write summary","type":"ai","icon":"sparkles"},{"label":"Text report","type":"sms","icon":"message-square"}]}}},{"from":"builder","text":"wait can i also see this as a dashboard we can check anytime?"},{"from":"agent","text":"Reading .claude/skills/surface/SKILL.md..."},{"from":"agent","text":"Creating the portfolio dashboard...","build":{"type":"surface","terminal":{"code":"{\n  \"name\": \"portfolio-dashboard\",\n  \"type\": \"portal\",\n  \"auth\": \"workspace\",\n  \"sections\": [{\n    \"type\": \"table\",\n    \"source\": \"SELECT address, status, tenant_name, last_maintenance, rent_status FROM units ORDER BY address\",\n    \"columns\": [\"Unit\", \"Status\", \"Tenant\", \"Last Maintenance\", \"Rent\"]\n  }]\n}","confirmation":"✓ Surface portfolio-dashboard live at stonebridge.mug.work/portfolio-dashboard"},"viz":{"surfaceName":"portfolio-dashboard","surfaceType":"portal","access":"auth","columns":["Unit","Status","Tenant","Rent"],"rows":[{"Unit":"1A","Status":"Occupied","Tenant":"Dana W.","Rent":"Current"},{"Unit":"2C","Status":"Occupied","Tenant":"Marcus J.","Rent":"Late"}]}}},{"from":"builder","text":"this is perfect. how do i deploy it?"},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every monday at 8am\nRegistering surface users...\n  maya@stonebridgeproperty.com\n  lisa.k@stonebridgeproperty.com\n  reggie.p@stonebridgeproperty.com","confirmation":"✓ Deployed to stonebridge.mug.work"},"viz":{"deployUrl":"stonebridge.mug.work","deployItems":[{"label":"sources","value":"appfolio","status":"syncing"},{"label":"workflows","value":"weekly-portfolio-report","status":"active"},{"label":"surfaces","value":"portfolio-dashboard","status":"live"}]}}},{"from":"exchange","channel":"slack","exchange":[{"name":"Maya","role":"Office manager","text":"lisa! weekly report is live. you and reggie get a text every monday morning with the full portfolio summary. live dashboard here: stonebridge.mug.work/portfolio-dashboard"},{"name":"Lisa","role":"Property manager","text":"wait it already flagged comfort hvac's response time??"},{"name":"Maya","role":"Office manager","text":"yep. 3.2 days average. we should talk to them"}]}]}},"clearpoint":{"text":"Dr. Patel has no cross-office visibility. Each of the five offices tracks their own metrics in separate spreadsheets. Getting a consolidated view means emailing all five managers and waiting. Regional manager Dr. Patel hires ops consultant Jordan to build a unified weekly report.","resolution":"Before: five separate spreadsheets, days of email chains. Now: every Monday at 7am, Dr. Patel, Kim, and Nina get an email with a consolidated report — patient volume, production, no-show rates, action items per office. All five offices in one view.","characters":[{"name":"Dr. Patel","role":"Regional manager"},{"name":"Kim","role":"Westside office manager"},{"name":"Nina","role":"Front desk coordinator"}],"buildStory":{"plan":"Jordan is going to connect Clearpoint's Dentrix system across all five offices — where they manage patient records, appointments, and production metrics — and sync everything into one database. From there she'll build a weekly report that aggregates metrics across locations, AI writes a summary with action items per office, and emails it to the leadership team.","messages":[{"from":"exchange","channel":"text","exchange":[{"name":"Dr. Patel","role":"Regional manager","text":"jordan, i have zero cross-office visibility. each office tracks metrics in their own spreadsheet. i need a consolidated weekly report. can you build that?"},{"name":"Jordan","text":"absolutely. i'll pull all five offices into one view and deliver it every monday morning. end of day"}]},{"from":"system","text":"Launching Claude Code..."},{"from":"builder","text":"","build":{"type":"login","terminal":{"code":"$ mug login\n✓ Logged in as jordan@jmconsulting.example\n\n$ cd clearpoint-dental\n$ mug sync","confirmation":"✓ Workspace synced — 5 connectors, 4 workflows, 4 surfaces"},"viz":{"workspaceName":"clearpoint-dental"}}},{"from":"agent","text":"Reading CLAUDE.md and workspace skills..."},{"from":"builder","text":"sync dentrix patient volume, production metrics, and appointment data across all five offices. we need cross-location reporting."},{"from":"agent","text":"Reading .claude/skills/connector/SKILL.md..."},{"from":"agent","text":"Got it. Connecting all five Dentrix instances and syncing production data."},{"from":"agent","text":"Connecting Clearpoint Dentrix...","build":{"type":"source","terminal":{"code":"source(\"dentrix\", {\n  apiKey: secrets.DENTRIX_KEY,\n  baseUrl: \"https://api.dentrix.com/v2\",\n  locations: [\"westside\", \"downtown\", \"north\", \"south\", \"east\"],\n  tables: [\"appointments\", \"production\", \"providers\"]\n});","confirmation":"✓ Synced 3 tables from Dentrix (5 locations) → clearpoint-reports (18,640 records)"},"viz":{"sourceName":"dentrix","sourceIcon":"cloud-download","databaseName":"clearpoint-reports","tables":[{"name":"appointments","pk":"id","rows":12400},{"name":"production","pk":"id","rows":5890},{"name":"providers","pk":"id","rows":350}]}}},{"from":"agent","text":"Initial sync complete. What interval for ongoing sync — daily, weekly, or every 15 minutes?"},{"from":"builder","text":"daily."},{"from":"agent","text":"✓ Scheduled: sync daily."},{"from":"builder","text":"now build a weekly report: aggregate patient volume, production per provider, and no-show rates by office. have AI write a summary with action items per location. email it to dr. patel, kim, and nina every monday at 7am."},{"from":"agent","text":"Reading .claude/skills/workflow/SKILL.md..."},{"from":"agent","text":"I'll build a cross-office report — aggregate all five locations, AI-write a summary with per-office action items, and email it Monday mornings."},{"from":"agent","text":"Building the weekly practice report...","build":{"type":"workflow","terminal":{"code":"workflow(\"weekly-practice-report\", {\n  trigger: \"schedule\",\n  schedule: \"every monday at 7am\",\n  steps: [\n    query(\"SELECT location, COUNT(*) as patients, SUM(production) as revenue, ROUND(COUNT(*) FILTER (WHERE status='no-show')*100.0/COUNT(*),1) as noshow_pct FROM appointments WHERE date > datetime('now', '-7 days') GROUP BY location\"),\n    query(\"SELECT p.name, p.location, COUNT(a.id) as patients, SUM(a.production) as revenue FROM providers p JOIN appointments a ON p.id = a.provider_id WHERE a.date > datetime('now', '-7 days') GROUP BY p.id ORDER BY revenue DESC\"),\n    ai(\"Write a weekly practice report for Clearpoint Dental Group (5 offices). Per-office metrics: {{office_data}}. Top/bottom providers: {{provider_data}}. Flag any office with no-show rate above 15% or production below target.\"),\n    email(\"drpatel@clearpointdental.com,kim.l@clearpointdental.com,nina.j@clearpointdental.com\", \"Weekly Practice Report — Clearpoint Dental\", \"{{ai.response}}\")\n  ]\n});","confirmation":"✓ Workflow weekly-practice-report built (4 steps: query → query → ai → email)"},"viz":{"workflowName":"weekly-practice-report","steps":[{"label":"Pull office metrics","type":"query","icon":"database"},{"label":"Pull provider data","type":"query","icon":"database"},{"label":"Write summary","type":"ai","icon":"sparkles"},{"label":"Email report","type":"email","icon":"mail"}]}}},{"from":"builder","text":"last thing — a dashboard where dr. patel can see cross-office metrics anytime."},{"from":"agent","text":"Reading .claude/skills/surface/SKILL.md..."},{"from":"agent","text":"Creating the practice dashboard...","build":{"type":"surface","terminal":{"code":"{\n  \"name\": \"practice-dashboard\",\n  \"type\": \"portal\",\n  \"auth\": \"workspace\",\n  \"sections\": [{\n    \"type\": \"table\",\n    \"source\": \"SELECT location, patients_this_week, production, noshow_rate FROM office_summary ORDER BY location\",\n    \"columns\": [\"Office\", \"Patients\", \"Production\", \"No-Show Rate\"]\n  }]\n}","confirmation":"✓ Surface practice-dashboard live at clearpoint.mug.work/practice-dashboard"},"viz":{"surfaceName":"practice-dashboard","surfaceType":"portal","access":"auth","columns":["Office","Patients","Production","No-Shows"],"rows":[{"Office":"Westside","Patients":"142","Production":"$48,200","No-Shows":"18%"},{"Office":"Downtown","Patients":"168","Production":"$52,100","No-Shows":"8%"}]}}},{"from":"builder","text":"perfect. deploy it."},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every monday at 7am\nRegistering surface users...\n  drpatel@clearpointdental.com\n  kim.l@clearpointdental.com\n  nina.j@clearpointdental.com","confirmation":"✓ Deployed to clearpoint.mug.work"},"viz":{"deployUrl":"clearpoint.mug.work","deployItems":[{"label":"sources","value":"dentrix (5 locations)","status":"syncing"},{"label":"workflows","value":"weekly-practice-report","status":"active"},{"label":"surfaces","value":"practice-dashboard","status":"live"}]}}},{"from":"exchange","channel":"text","exchange":[{"name":"Jordan","text":"dr. patel, weekly report is live. all five offices consolidated — every monday at 7am. live dashboard here: clearpoint.mug.work/practice-dashboard"},{"name":"Dr. Patel","role":"Regional manager","text":"westside no-show rate is 18%?? kim and i need to talk about that"}]}]}},"pacificridge":{"text":"VP of Sales Greg has no idea how the quarter is going. Fill rates, rep performance, territory metrics — it's all in different Salesforce reports and ERP screens. Getting a consolidated view means asking three people to pull numbers. VP of Sales Greg brings in systems integrator Nate to automate quarterly reporting.","resolution":"Before: three people pulling numbers from different systems. Now: every Friday at 3pm, Greg, Jake, Elena, and Ray get a Slack message with the territory report — fill rates, rep performance, dormant accounts, flagged issues.","characters":[{"name":"Greg","role":"VP of Sales"},{"name":"Jake","role":"Sales rep"},{"name":"Elena","role":"Sales rep"},{"name":"Ray","role":"Warehouse manager"}],"buildStory":{"plan":"Nate is going to connect both Pacific Ridge's Salesforce and ERP — where they track accounts, orders, inventory, and rep activity — and sync everything into a single database. From there he'll build a weekly territory report that aggregates sales metrics, AI writes a narrative with flagged issues, and posts it to the #sales Slack channel every Friday.","messages":[{"from":"exchange","channel":"slack","exchange":[{"name":"Greg","role":"VP of Sales","text":"nate, i can't see how the quarter's going without asking three people to pull numbers from different systems. can you build a report that pulls it all together?"},{"name":"Nate","text":"yeah, i'll join salesforce and ERP data into one report and post it to slack every friday. few hours"}]},{"from":"system","text":"Launching Claude Code..."},{"from":"builder","text":"","build":{"type":"login","terminal":{"code":"$ mug login\n✓ Logged in as nate@natedev.example\n\n$ cd pacific-ridge-supply\n$ mug sync","confirmation":"✓ Workspace synced — 2 connectors, 4 workflows, 4 surfaces"},"viz":{"workspaceName":"pacific-ridge-supply"}}},{"from":"agent","text":"Reading CLAUDE.md and workspace skills..."},{"from":"builder","text":"sync salesforce accounts and opportunities alongside ERP orders and fill rates. join on account_id so we get a unified sales view."},{"from":"agent","text":"Reading .claude/skills/connector/SKILL.md..."},{"from":"agent","text":"On it. Connecting both Salesforce and ERP and syncing with the join relationship."},{"from":"agent","text":"Connecting Pacific Ridge Salesforce + ERP...","build":{"type":"source","terminal":{"code":"source(\"salesforce\", {\n  clientId: secrets.SF_CLIENT_ID,\n  clientSecret: secrets.SF_CLIENT_SECRET,\n  instanceUrl: \"https://pacificridge.my.salesforce.com\",\n  tables: [\"accounts\", \"opportunities\"]\n});\nsource(\"erp\", {\n  driver: \"odbc\",\n  connectionString: secrets.ERP_CONNECTION,\n  tables: [\"orders\", \"fill_rates\"]\n});","confirmation":"✓ Synced 4 tables from 2 sources → pacific-ridge-reports (6,420 records)"},"viz":{"sourceName":"salesforce + erp","sourceIcon":"cloud-download","databaseName":"pacific-ridge-reports","tables":[{"name":"accounts","pk":"id","rows":340},{"name":"opportunities","pk":"id","rows":1280},{"name":"orders","pk":"id","rows":3080},{"name":"fill_rates","pk":"id","rows":1720}]}}},{"from":"agent","text":"Initial sync complete. What interval for ongoing sync — daily, weekly, or every 15 minutes?"},{"from":"builder","text":"weekly."},{"from":"agent","text":"✓ Scheduled: sync weekly."},{"from":"builder","text":"build a weekly report: pull fill rate, revenue by rep, dormant accounts, and territory performance. have AI write a narrative with flagged issues per rep. post it to #sales on slack every friday at 3pm."},{"from":"agent","text":"Reading .claude/skills/workflow/SKILL.md..."},{"from":"agent","text":"I'll build a cross-system territory report — aggregate Salesforce and ERP data, AI-write a narrative, and post to Slack every Friday."},{"from":"agent","text":"Building the weekly territory report...","build":{"type":"workflow","terminal":{"code":"workflow(\"weekly-territory-report\", {\n  trigger: \"schedule\",\n  schedule: \"every friday at 3pm\",\n  steps: [\n    query(\"SELECT rep, COUNT(DISTINCT account_id) as accounts, SUM(order_total) as revenue, AVG(fill_rate) as avg_fill FROM orders o JOIN accounts a ON o.account_id = a.id GROUP BY rep\"),\n    query(\"SELECT a.name, a.rep, MAX(o.order_date) as last_order, ROUND(julianday('now') - julianday(MAX(o.order_date))) as days_dormant FROM accounts a JOIN orders o ON a.id = o.account_id GROUP BY a.id HAVING days_dormant > 45\"),\n    ai(\"Write a weekly territory report for Pacific Ridge Supply. Rep performance: {{rep_data}}. Dormant accounts: {{dormant_data}}. Overall fill rate: {{avg_fill}}%. Flag reps below quota and accounts dormant 60+ days.\"),\n    slack(\"#sales\", \"{{ai.response}}\")\n  ]\n});","confirmation":"✓ Workflow weekly-territory-report built (4 steps: query → query → ai → slack)"},"viz":{"workflowName":"weekly-territory-report","steps":[{"label":"Pull rep metrics","type":"query","icon":"database"},{"label":"Find dormant accounts","type":"query","icon":"database"},{"label":"Write summary","type":"ai","icon":"sparkles"},{"label":"Post to #sales","type":"slack","icon":"message-square"}]}}},{"from":"builder","text":"and a dashboard where greg can drill into rep performance and territory metrics."},{"from":"agent","text":"Reading .claude/skills/surface/SKILL.md..."},{"from":"agent","text":"Creating the territory dashboard...","build":{"type":"surface","terminal":{"code":"{\n  \"name\": \"territory-dashboard\",\n  \"type\": \"portal\",\n  \"auth\": \"workspace\",\n  \"sections\": [{\n    \"type\": \"table\",\n    \"source\": \"SELECT rep, accounts, revenue, avg_fill_rate, dormant_accounts FROM rep_summary ORDER BY revenue DESC\",\n    \"columns\": [\"Rep\", \"Accounts\", \"Revenue\", \"Fill Rate\", \"Dormant\"]\n  }]\n}","confirmation":"✓ Surface territory-dashboard live at pacificridge.mug.work/territory-dashboard"},"viz":{"surfaceName":"territory-dashboard","surfaceType":"portal","access":"auth","columns":["Rep","Accounts","Revenue","Fill Rate"],"rows":[{"Rep":"Jake","Accounts":"42","Revenue":"$186K","Fill Rate":"91%"},{"Rep":"Elena","Accounts":"38","Revenue":"$142K","Fill Rate":"96%"}]}}},{"from":"builder","text":"looks good. deploy it."},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every friday at 3pm\nRegistering surface users...\n  greg.v@pacificridgesupply.com\n  jake.r@pacificridgesupply.com\n  elena.s@pacificridgesupply.com\n  ray.k@pacificridgesupply.com","confirmation":"✓ Deployed to pacificridge.mug.work"},"viz":{"deployUrl":"pacificridge.mug.work","deployItems":[{"label":"sources","value":"salesforce + erp","status":"syncing"},{"label":"workflows","value":"weekly-territory-report","status":"active"},{"label":"surfaces","value":"territory-dashboard","status":"live"}]}}},{"from":"exchange","channel":"slack","exchange":[{"name":"Nate","text":"greg, territory report is live. posts to #sales every friday at 3pm — rep performance, fill rates, dormant accounts. live dashboard here: pacificridge.mug.work/territory-dashboard"},{"name":"Greg","role":"VP of Sales","text":"jake's fill rate is 91%? that explains the wilson plumbing situation. thanks nate"}]}]}},"vanguard":{"text":"CEO Marcus has no consolidated view across four branches. Placements, margins, client satisfaction — all in separate Bullhorn reports and Excel spreadsheets. Getting a weekly summary means asking Tom and Priya to pull numbers and email them. Ops coordinator Devon decides to build an automated executive report himself.","resolution":"Before: two people pulling numbers from different systems, emailed on Thursday. Now: every Monday at 7am, Marcus, Tom, and Priya get an email with the full executive report — placements, margins, client satisfaction, flagged issues per branch. Devon built it in an afternoon.","characters":[{"name":"Marcus","role":"CEO"},{"name":"Tom","role":"Southeast regional director"},{"name":"Priya","role":"Account manager"}],"buildStory":{"plan":"Devon is going to try connecting Vanguard's Bullhorn ATS — where they manage placements, clients, and timesheets — and see if he can get all four branches' data into one database. If that works, he wants to build a weekly executive report that aggregates branch metrics, AI writes a narrative with flagged issues, and emails it to the leadership team.","messages":[{"from":"exchange","channel":"slack","exchange":[{"name":"Devon","role":"Ops coordinator","text":"marcus, what if i could build you a weekly report that pulls all four branches into one view? placements, margins, client satisfaction, flagged issues — delivered every monday morning?"},{"name":"Marcus","role":"CEO","text":"if you can actually do that i'll buy you lunch for a month"}]},{"from":"system","text":"Launching Claude Code..."},{"from":"builder","text":"i want to build an executive report for our staffing company using mug. it needs to pull placement data, margins, and client satisfaction across all four branches. can you help me set this up?"},{"from":"agent","text":"Found it — github.com/mugwork/mug. Installing the CLI now.","build":{"type":"login","terminal":{"code":"$ npm install -g @mugwork/mug\n✓ Installed @mugwork/mug v1.0.0\n\n$ mug login\n✓ Logged in as devon@vanguardworkforce.com\n\n$ cd vanguard-workforce\n$ mug sync","confirmation":"✓ Workspace synced — 2 connectors, 4 workflows, 4 surfaces"},"viz":{"workspaceName":"vanguard-workforce"}}},{"from":"agent","text":"Reading CLAUDE.md and workspace skills..."},{"from":"builder","text":"can you pull in placements, timesheets, and client data from bullhorn? we need all four branches in one place"},{"from":"agent","text":"Reading .claude/skills/connector/SKILL.md..."},{"from":"agent","text":"Absolutely. I'll sync placements, timesheets, and clients from Bullhorn across all branches."},{"from":"agent","text":"Connecting Vanguard Bullhorn...","build":{"type":"source","terminal":{"code":"source(\"bullhorn\", {\n  clientId: secrets.BH_CLIENT_ID,\n  clientSecret: secrets.BH_CLIENT_SECRET,\n  restUrl: \"https://rest.bullhornstaffing.com\",\n  tables: [\"placements\", \"timesheets\", \"clients\"]\n});","confirmation":"✓ Synced 3 tables from Bullhorn → vanguard-reports (4,820 records)"},"viz":{"sourceName":"bullhorn","sourceIcon":"cloud-download","databaseName":"vanguard-reports","tables":[{"name":"placements","pk":"id","rows":1450},{"name":"timesheets","pk":"id","rows":2890},{"name":"clients","pk":"id","rows":480}]}}},{"from":"agent","text":"Sync is set up. How often should I keep this data in sync? Every 15 minutes, daily, or weekly?"},{"from":"builder","text":"daily sounds right"},{"from":"agent","text":"✓ Scheduled: sync daily."},{"from":"builder","text":"ok now can you build a weekly report? i need placements by branch, margins, client satisfaction, and anything that looks off. have AI write it up and email it to marcus, tom, and priya every monday at 7am"},{"from":"agent","text":"Reading .claude/skills/workflow/SKILL.md..."},{"from":"agent","text":"Yes — I'll build an executive report that aggregates all four branches, AI-writes a narrative with flagged issues, and emails it Monday mornings."},{"from":"agent","text":"Building the weekly executive report...","build":{"type":"workflow","terminal":{"code":"workflow(\"weekly-executive-report\", {\n  trigger: \"schedule\",\n  schedule: \"every monday at 7am\",\n  steps: [\n    query(\"SELECT branch, COUNT(*) as placements, SUM(bill_rate * hours) as revenue, SUM((bill_rate - pay_rate) * hours) as margin, ROUND(SUM((bill_rate - pay_rate) * hours) / SUM(bill_rate * hours) * 100, 1) as margin_pct FROM placements p JOIN timesheets t ON p.id = t.placement_id WHERE t.week > datetime('now', '-7 days') GROUP BY branch\"),\n    query(\"SELECT c.name, c.branch, c.satisfaction_score, COUNT(p.id) as active_placements FROM clients c LEFT JOIN placements p ON c.id = p.client_id AND p.status = 'active' GROUP BY c.id ORDER BY c.satisfaction_score ASC LIMIT 10\"),\n    ai(\"Write a weekly executive report for Vanguard Workforce (4 branches). Branch metrics: {{branch_data}}. Client satisfaction: {{client_data}}. Flag any branch with margin below 25% or clients with satisfaction below 7.\"),\n    email(\"marcus@vanguardworkforce.com,tom.r@vanguardworkforce.com,priya.m@vanguardworkforce.com\", \"Weekly Executive Report — Vanguard Workforce\", \"{{ai.response}}\")\n  ]\n});","confirmation":"✓ Workflow weekly-executive-report built (4 steps: query → query → ai → email)"},"viz":{"workflowName":"weekly-executive-report","steps":[{"label":"Pull branch metrics","type":"query","icon":"database"},{"label":"Pull client satisfaction","type":"query","icon":"database"},{"label":"Write summary","type":"ai","icon":"sparkles"},{"label":"Email report","type":"email","icon":"mail"}]}}},{"from":"builder","text":"wait can i also get a dashboard where marcus can see branch performance anytime?"},{"from":"agent","text":"Reading .claude/skills/surface/SKILL.md..."},{"from":"agent","text":"Creating the executive dashboard...","build":{"type":"surface","terminal":{"code":"{\n  \"name\": \"executive-dashboard\",\n  \"type\": \"portal\",\n  \"auth\": \"workspace\",\n  \"sections\": [{\n    \"type\": \"table\",\n    \"source\": \"SELECT branch, placements_this_week, revenue, margin_pct, avg_satisfaction FROM branch_summary ORDER BY revenue DESC\",\n    \"columns\": [\"Branch\", \"Placements\", \"Revenue\", \"Margin\", \"Satisfaction\"]\n  }]\n}","confirmation":"✓ Surface executive-dashboard live at portal.vanguardworkforce.com/executive-dashboard"},"viz":{"surfaceName":"executive-dashboard","surfaceType":"portal","access":"auth","columns":["Branch","Placements","Revenue","Margin"],"rows":[{"Branch":"Northeast","Placements":"48","Revenue":"$142K","Margin":"32%"},{"Branch":"Southeast","Placements":"36","Revenue":"$98K","Margin":"19%"}]}}},{"from":"builder","text":"this is unreal. how do i make it live?"},{"from":"agent","text":"Deploying to production...","build":{"type":"deploy","terminal":{"code":"$ mug deploy\n\nBundling workspace...\nUploading to Cloudflare...\nConfiguring schedule: every monday at 7am\nRegistering surface users...\n  devon@vanguardworkforce.com\n  marcus@vanguardworkforce.com\n  tom.r@vanguardworkforce.com\n  priya.m@vanguardworkforce.com","confirmation":"✓ Deployed to portal.vanguardworkforce.com"},"viz":{"deployUrl":"portal.vanguardworkforce.com","deployItems":[{"label":"sources","value":"bullhorn","status":"syncing"},{"label":"workflows","value":"weekly-executive-report","status":"active"},{"label":"surfaces","value":"executive-dashboard","status":"live"}]}}},{"from":"exchange","channel":"slack","exchange":[{"name":"Devon","role":"Ops coordinator","text":"marcus, executive report is live. every monday at 7am — all four branches, placements, margins, satisfaction, flagged issues. live dashboard: portal.vanguardworkforce.com/executive-dashboard"},{"name":"Marcus","role":"CEO","text":"southeast margin is 19%?? tom and i need to have a conversation. devon, i owe you lunch for a month"},{"name":"Devon","role":"Ops coordinator","text":"i'll take it. honestly the AI did most of the work"}]}]}}}'>
          
          
        
      
      
        
        
        
          What they'll use
          
            
              
              Claude Code
              Builds API connections, custom agents, and workflows in Mug
            
            
              
              Mug CLI Agent Kit
              Gives Claude everything he needs to build on Mug
            
            
              
              Cloudflare
              Secure platform where Mug workspaces are deployed
            
            
              
              GitHub
              Optional backup of an entire Mug workspace with full git functionality
            
          
        
      
    
  

  
    
      
        
        
          
          
        
      
      
        
        
          
            
            Workspace explorer
          
        
      
      
        
      
    
  

  
    The new (better) way
    
      
      
    
  

  
    
      
        
        
      
      
    
     Open in new tab
    
      
        
          
        
        
          
          select a company and use case above
        
      
      
        Pick a company and use case to see a live surface
        
      
    
  

  
  Add AI automation, without adding friction
  
    Try it in a free workspace
    See pricing
  
  
    
      
      Mug for Companies
      The fastest, most flexible platform for buildingAI automation at your company
    
    
      
      Mug for Consultants
      The highest leverage platform for buildingAI automation for your clients
    
  
  
    Read more about