# Alaskan Labs: the whole site > Alaskan Labs makes Alaskan: AI agent teams for businesses. A team of Alaskan dogs does the work under rules you set, asks only about what you choose, and keeps everything on the record. # Alaskan Labs: AI agent teams for businesses > Alaskan Labs makes Alaskan: AI agent teams for businesses. A team of Alaskan dogs does the work under rules you set, asks only about what you choose, and keeps everything on the record. Canonical: https://alaskanlabs.com ## Alaskan for Business A company gets a team of AI dogs, led by an Alaskan Malamute. Each dog has a job and does it under the rules you set: what it may just do, what to ask you first, and what it must never do. Today shows the few things that need you; everything else is handled, and all of it is on the record in the Ledger. It runs in the browser at alaskan.ai, and the iPhone app joins with a code. - Sign up: https://alaskan.ai/signup - How it works: https://alaskanlabs.com/docs/business.md ## Some Alaskans - [Prospector](https://alaskanlabs.com/alaskans/prospector.md) (code 4001): Finds people who fit your ideal customer and drafts a first message to each. - [Call Prep](https://alaskanlabs.com/alaskans/call-prep.md) (code 4003): Before your meetings: who you're seeing, what's new with them and what to ask. - [Competitor Watch](https://alaskanlabs.com/alaskans/competitor-watch.md) (code 4008): Tracks your competitors' pricing, product, hiring and news, and briefs you weekly. - [Research Desk](https://alaskanlabs.com/alaskans/research-desk.md) (code 4014): Sourced, dated answers and fact-checks, not guesses from memory. - [Morning Paper](https://alaskanlabs.com/alaskans/morning-paper.md) (code 4018): Your day on one page: meetings, what needs you, and the news you care about. - [Inbox Desk](https://alaskanlabs.com/alaskans/inbox-desk.md) (code 4019): Sorts your inbox into needs you, can wait and archive, and drafts the replies. All of them: https://alaskanlabs.com/alaskans.md ## Build on Alaskan - Team and workflow templates are plain JSON under the MIT licence: https://alaskanlabs.com/teams.md, https://alaskanlabs.com/workflows.md - The API: https://alaskanlabs.com/docs/api.md - Alaskan bots: made a CLI for AI agents? Package it with its skill once, and any company can add it to its team. The guide: https://alaskanlabs.com/docs/build-an-alaskan-bot.md; built by others: https://alaskanlabs.com/bots.md - For AI agents: https://alaskanlabs.com/docs/for-ai-agents.md, https://alaskanlabs.com/llms.txt, https://alaskanlabs.com/llms-full.txt --- # Alaskans > Alaskan's own Alaskans: each does one job the way a capable person in that role would. Add one in the iPhone app by sending its 4-digit code to your Alaskan. Canonical: https://alaskanlabs.com/alaskans ## Sales - [Prospector](https://alaskanlabs.com/alaskans/prospector.md) (code 4001): Finds people who fit your ideal customer and drafts a first message to each. - [Account Brief](https://alaskanlabs.com/alaskans/account-brief.md) (code 4002): Researches a company before your call and writes the brief and account plan. - [Call Prep](https://alaskanlabs.com/alaskans/call-prep.md) (code 4003): Before your meetings: who you're seeing, what's new with them and what to ask. - [Call Follow-Up](https://alaskanlabs.com/alaskans/call-follow-up.md) (code 4004): Turns call notes into the follow-up email, next steps and CRM update. - [Call Coach](https://alaskanlabs.com/alaskans/call-coach.md) (code 4005): Scores your sales calls and tells you exactly what to fix before the next one. - [Proof Desk](https://alaskanlabs.com/alaskans/proof-desk.md) (code 4007): Turns customer calls and notes into case studies, quotes and proof points. ## Marketing - [Competitor Watch](https://alaskanlabs.com/alaskans/competitor-watch.md) (code 4008): Tracks your competitors' pricing, product, hiring and news, and briefs you weekly. - [AI Visibility](https://alaskanlabs.com/alaskans/ai-visibility.md) (code 4009): Checks whether AI answers and Google recommend you, who they name instead, and why. - [SEO Briefs](https://alaskanlabs.com/alaskans/seo-briefs.md) (code 4010): Turns keywords into content ideas and writer-ready briefs for search and AI answers. - [Site Audit](https://alaskanlabs.com/alaskans/site-audit.md) (code 4011): Audits your site for search, clarity, conversion, accessibility and trust, with fixes. - [Humanizer](https://alaskanlabs.com/alaskans/humanizer.md) (code 4012): Rewrites drafts so they read like a person wrote them, and shows what changed. ## Research and strategy - [Buzz](https://alaskanlabs.com/alaskans/buzz.md) (code 4013): What people actually said about any topic in the last 30 days, with the receipts. - [Research Desk](https://alaskanlabs.com/alaskans/research-desk.md) (code 4014): Sourced, dated answers and fact-checks, not guesses from memory. - [Idea Stress Test](https://alaskanlabs.com/alaskans/idea-stress-test.md) (code 4015): Investigates a startup or product idea and tells you straight if it holds up. - [Pitch Coach](https://alaskanlabs.com/alaskans/pitch-coach.md) (code 4016): Reads your pitch deck like an investor and helps you sharpen the story. ## Every day - [Loose Ends](https://alaskanlabs.com/alaskans/loose-ends.md) (code 4006): Finds what you promised people or still owe them, and drafts the replies. - [Event Producer](https://alaskanlabs.com/alaskans/event-producer.md) (code 4017): Turns your event into a run of show, guest list, checklist and timeline. - [Morning Paper](https://alaskanlabs.com/alaskans/morning-paper.md) (code 4018): Your day on one page: meetings, what needs you, and the news you care about. - [Inbox Desk](https://alaskanlabs.com/alaskans/inbox-desk.md) (code 4019): Sorts your inbox into needs you, can wait and archive, and drafts the replies. - [Deal Hunter](https://alaskanlabs.com/alaskans/deal-hunter.md) (code 4020): Finds the real best price for what you want to buy, shipping and tax included. Add any of them from https://alaskan.ai/b/, which opens the iPhone app. Create your own: https://alaskan.ai/signup --- # Prospector > Finds people who fit your ideal customer and drafts a first message to each. Canonical: https://alaskanlabs.com/alaskans/prospector Tell Prospector who you sell to. It finds companies with a reason to talk now (hiring, funding, a launch), the right person at each, and writes a short, specific first message. Every name comes from a public source, and nothing is sent without your yes. ## Add it Send the code **4001** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4001. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: What do you sell, in a line?; Who's your ideal customer? Industry, size, role, where; Your website (optional) - Apps it can use, once you connect them: HubSpot, Google Sheets, Gmail - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Find 10 prospects that fit - Find companies like my best customer - Who's hiring for roles I help with? --- # Account Brief > Researches a company before your call and writes the brief and account plan. Canonical: https://alaskanlabs.com/alaskans/account-brief Name a company and Account Brief tells you what they do, what's changed lately, who to talk to, how what you sell fits, and the questions to ask, with dated sources. With your CRM connected it starts from your history with them. ## Add it Send the code **4002** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4002. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: What do you sell, in a line? - Apps it can use, once you connect them: HubSpot, Gmail - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Brief me on stripe.com - Account plan for Acme - What's new at Notion lately? --- # Call Prep > Before your meetings: who you're seeing, what's new with them and what to ask. Canonical: https://alaskanlabs.com/alaskans/call-prep Call Prep reads your calendar and preps each meeting with people outside your company: who they are, what their company has been up to, your past emails with them, and what to aim for. It can do it every weekday morning on its own. ## Add it Send the code **4003** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4003. ## Facts - When it works: Weekdays · 7:30 AM, and when you ask - It asks once, at set-up: What do you do or sell, in a line? - Apps it can use, once you connect them: Google Calendar, Gmail, HubSpot - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Prep my next meeting - Prep today's calls - Prep me for a call with Acme --- # Call Follow-Up > Turns call notes into the follow-up email, next steps and CRM update. Canonical: https://alaskanlabs.com/alaskans/call-follow-up Paste your notes or a transcript. Call Follow-Up writes the follow-up email in your voice, the agreed next steps with owners and dates, and the fields for your CRM, using only what was actually said. ## Add it Send the code **4004** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4004. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: How do you sign off emails? (optional) - Apps it can use, once you connect them: Gmail, HubSpot - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Here are my call notes: - Write the follow-up from this transcript - What did we agree to? --- # Call Coach > Scores your sales calls and tells you exactly what to fix before the next one. Canonical: https://alaskanlabs.com/alaskans/call-coach Paste a call transcript. Call Coach scores the opening, discovery, listening, objection handling, clarity and next step, quotes the moments that mattered, and gives you the lines you could have said. It can also play a tough buyer so you can practise. ## Add it Send the code **4005** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4005. ## Facts - When it works: When you ask, in its chat - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Score this call: - How did I handle the pricing objection? - Play a skeptical buyer so I can practise --- # Loose Ends > Finds what you promised people or still owe them, and drafts the replies. Canonical: https://alaskanlabs.com/alaskans/loose-ends Loose Ends reads your recent email, calendar and Slack for promises you made, questions waiting on you and threads where someone's waiting, then drafts each reply. It can check every weekday morning. Nothing sends without your yes. ## Add it Send the code **4006** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4006. ## Facts - When it works: Weekdays · 8:00 AM, and when you ask - Apps it can use, once you connect them: Gmail, Google Calendar, Slack - Category: Work - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Who's waiting on me? - What did I promise this week? - Draft replies to what's overdue --- # Proof Desk > Turns customer calls and notes into case studies, quotes and proof points. Canonical: https://alaskanlabs.com/alaskans/proof-desk Give Proof Desk your call notes, transcripts or reviews. It writes the customer story, pulls the best quotes word for word, lists the proof points, and drafts the note asking the customer to approve it. It never invents a number or a quote. ## Add it Send the code **4007** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4007. ## Facts - When it works: When you ask, in its chat - Apps it can use, once you connect them: Gmail - Category: Sales - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Turn these notes into a case study: - Pull quotes from this transcript - Draft the approval request to the customer --- # Competitor Watch > Tracks your competitors' pricing, product, hiring and news, and briefs you weekly. Canonical: https://alaskanlabs.com/alaskans/competitor-watch Tell Competitor Watch who you compete with. Each week it checks their sites, pricing, changelogs, job posts and news, and tells you only what actually changed, what it means for you, and what to do. ## Add it Send the code **4008** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4008. ## Facts - When it works: Mondays · 8:00 AM, and when you ask - It asks once, at set-up: Which competitors? Names or websites; What do you sell, in a line? (optional) - Category: Marketing - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - What changed at my competitors this week? - Compare our pricing with theirs - Which competitors am I missing? --- # AI Visibility > Checks whether AI answers and Google recommend you, who they name instead, and why. Canonical: https://alaskanlabs.com/alaskans/ai-visibility AI Visibility asks the questions your buyers ask, checks the sources AI assistants and Google draw their answers from, and shows where you appear, who gets named instead, and the pages and listings that would change that. ## Add it Send the code **4009** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4009. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: Your company and website; What do you sell, in a line?; Questions your buyers ask (optional) - Category: Marketing - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Am I showing up in AI answers? - Who gets recommended instead of me? - What should I publish to show up? --- # SEO Briefs > Turns keywords into content ideas and writer-ready briefs for search and AI answers. Canonical: https://alaskanlabs.com/alaskans/seo-briefs Give SEO Briefs a keyword or a topic. It works out what searchers want, studies what ranks now, finds the gap, and writes a brief a writer can start from: angle, outline, questions to answer and what to link. ## Add it Send the code **4010** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4010. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: Your website; Who are your customers? - Category: Marketing - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Content ideas for my site - Write a brief for this keyword: - What should I write next? --- # Site Audit > Audits your site for search, clarity, conversion, accessibility and trust, with fixes. Canonical: https://alaskanlabs.com/alaskans/site-audit Site Audit reads your key pages and scores search basics, how clear the message is, conversion, accessibility and trust, with the page that shows each problem and the exact fix, ranked P0, P1 and P2. No made-up metrics. ## Add it Send the code **4011** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4011. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: Your website - Category: Marketing - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Audit my site - Why isn't my homepage converting? - Check my pricing page --- # Humanizer > Rewrites drafts so they read like a person wrote them, and shows what changed. Canonical: https://alaskanlabs.com/alaskans/humanizer Paste a draft, an email or a page. Humanizer keeps your meaning, facts and voice, cuts the filler and the tells of AI writing, and shows every change and why. It never adds a fact. ## Add it Send the code **4012** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4012. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: A few lines you've written, so I match your voice (optional) - Category: Writing - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Make this sound human: - Tighten this email: - Rewrite this page in my voice: --- # Buzz > What people actually said about any topic in the last 30 days, with the receipts. Canonical: https://alaskanlabs.com/alaskans/buzz Name a topic, product or company. Buzz reads the last 30 days of news, Reddit, forums, reviews and social posts and tells you the themes, the mood, the voices worth knowing and the quotes, all dated and linked. ## Add it Send the code **4013** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4013. ## Facts - When it works: When you ask, in its chat - Category: Research - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - What are people saying about my product? - Buzz on AI agents this month - How do people feel about Notion lately? --- # Research Desk > Sourced, dated answers and fact-checks, not guesses from memory. Canonical: https://alaskanlabs.com/alaskans/research-desk Ask Research Desk anything that matters. It checks several independent sources, prefers primary ones, dates every claim, flags where sources disagree, and tells you how sure it is. For a fact-check you get a clear verdict. ## Add it Send the code **4014** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4014. ## Facts - When it works: When you ask, in its chat - Category: Research - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Fact-check this claim: - What's the latest on this? - Research this for me: --- # Idea Stress Test > Investigates a startup or product idea and tells you straight if it holds up. Canonical: https://alaskanlabs.com/alaskans/idea-stress-test Describe an idea. Idea Stress Test looks for real evidence of the problem, sizes the market with its working shown, maps who's already there, checks the business model and how you'd reach customers, names the riskiest assumption, and suggests a two-week test. ## Add it Send the code **4015** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4015. ## Facts - When it works: When you ask, in its chat - Category: Business - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Stress-test my idea: - Who's already doing this? - How would I test this cheaply? --- # Pitch Coach > Reads your pitch deck like an investor and helps you sharpen the story. Canonical: https://alaskanlabs.com/alaskans/pitch-coach Paste your deck's text or share a link to it. Pitch Coach tells you what an investor will understand, believe, question and remember, slide by slide, the questions you'll get with answers, and rewrites your weakest lines. ## Add it Send the code **4016** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4016. ## Facts - When it works: When you ask, in its chat - Category: Business - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Review my deck: - What will investors ask me? - Rewrite my problem slide --- # Event Producer > Turns your event into a run of show, guest list, checklist and timeline. Canonical: https://alaskanlabs.com/alaskans/event-producer Tell Event Producer what you're planning. It writes the minute-by-minute run of show, who owns what, the guest list to track, what to book and by when, the invites and reminders timeline, a budget, and the backup plans. ## Add it Send the code **4017** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4017. ## Facts - When it works: When you ask, in its chat - Apps it can use, once you connect them: Google Calendar, Gmail - Category: Work - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Plan a 40-person launch party - Run of show for our offsite - What do I need to book for a meetup? --- # Morning Paper > Your day on one page: meetings, what needs you, and the news you care about. Canonical: https://alaskanlabs.com/alaskans/morning-paper Every morning Morning Paper reads your calendar and email and the news on your topics, and lays out your day: what's on, what needs a reply, and what's worth knowing. It's ready with a notification before you start. ## Add it Send the code **4018** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4018. ## Facts - When it works: Every day · 7:00 AM, and when you ask - It asks once, at set-up: News topics you care about (optional) - Apps it can use, once you connect them: Google Calendar, Gmail - Category: News - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Make today's paper - What's on tomorrow? - Anything urgent in my inbox? --- # Inbox Desk > Sorts your inbox into needs you, can wait and archive, and drafts the replies. Canonical: https://alaskanlabs.com/alaskans/inbox-desk Inbox Desk reads your new email, sorts it, and drafts replies for what needs you in your voice. It can archive the noise and put drafts in Gmail, each only after your yes, and it never sends. It can run every weekday morning. ## Add it Send the code **4019** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4019. ## Facts - When it works: Weekdays · 8:00 AM, and when you ask - Apps it can use, once you connect them: Gmail - Category: Work - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Sort my inbox - Draft replies to what needs me - What can I archive? --- # Deal Hunter > Finds the real best price for what you want to buy, shipping and tax included. Canonical: https://alaskanlabs.com/alaskans/deal-hunter Tell Deal Hunter what you want. It compares the exact same item across trusted stores, adds shipping, tax and the return policy, checks for real coupons, and tells you whether to buy now or wait. It never buys anything. ## Add it Send the code **4020** to your Alaskan in the iPhone app, or open https://alaskan.ai/b/4020. ## Facts - When it works: When you ask, in its chat - It asks once, at set-up: Which country do you shop in?; Stores you like (optional) - Category: Money - Age rating: 13+ - Made by: Alaskan - AI: Claude by Anthropic ## Try asking - Best price on AirPods Pro - Is this a good deal? - Should I buy now or wait? --- # Team templates > A whole team for one kind of business: its dogs, their rules and routines, the dashboard and the workflows it installs. Plain JSON, MIT-licensed. Canonical: https://alaskanlabs.com/teams - [Agency outbound team](https://alaskanlabs.com/teams/agency-outbound.md): Prospecting, intros, follow-ups, CRM hygiene and the weekly report, led by Sitka. Every email and every CRM change is in Decide, or under a rule you set. JSON: https://alaskanlabs.com/teams/agency-outbound.json - [Dental clinic front desk](https://alaskanlabs.com/teams/dental-clinic.md): A front desk that never misses a recall: booking and reschedules, recall texts, insurance follow-ups, reviews and the website. Every message to a patient comes to Decide first unless a rule says otherwise. JSON: https://alaskanlabs.com/teams/dental-clinic.json - [Starter team](https://alaskanlabs.com/teams/starter.md): Seven dogs led by Sitka, a Malamute chief of staff: inbox, outbound, recruiting, finance, support and the website. Routine work happens under your rules; anything with a side effect comes to Decide. JSON: https://alaskanlabs.com/teams/starter.json The format: https://alaskanlabs.com/docs/team-templates.md --- # Agency outbound team > Prospecting, intros, follow-ups, CRM hygiene and the weekly report, led by Sitka. Every email and every CRM change is in Decide, or under a rule you set. Canonical: https://alaskanlabs.com/teams/agency-outbound For: Agencies and B2B teams that live on outbound. 6 dogs, licence MIT, by Alaskan Labs. JSON: https://alaskanlabs.com/teams/agency-outbound.json ## The dogs ### Sitka (lead): Head of growth: runs the outbound team Alaskan Malamute. Turns a target list into booked meetings. - Just do: Move work between dogs; Write the weekly plan - Ask first: Change who we target; Anything that goes to a client - Never: Buy a contact list; Email from a client's domain without their sign-off - Routines: Weekly plan (Mondays · 8:00 AM); Pipeline check (Weekdays · 4:30 PM) - Apps: Slack, HubSpot, Attio ### Kodiak: Prospecting: finds and qualifies accounts Alaskan Husky. Finds companies that fit and the people to write to. - Just do: Add qualified accounts to the CRM; Enrich contacts with title and company size - Ask first: Add more than 25 accounts at once; Target a new industry - Never: Scrape personal emails; Add anyone who opted out - Routines: New accounts (Mon, Wed · 9:00 AM) - Apps: Attio, HubSpot, LinkedIn ### Juneau: Intros: first emails Alaskan Klee Kai. Writes first emails worth answering. - Just do: Draft intros - Ask first: Send an intro - Never: Send more than 40 emails a day from one inbox; Claim a result we can't show - Routines: Draft today's intros (Weekdays · 8:30 AM) - Apps: Gmail, HubSpot ### Seward: Follow-ups: replies and meetings Alaskan Husky. Answers replies and books the meetings. - Just do: Send the scheduling link to a positive reply; Stop a sequence when someone replies - Ask first: Book a meeting; Pause a sequence - Never: Follow up more than 3 times; Answer an unsubscribe with anything but a confirmation - Routines: Reply sweep (Weekdays · 10:00 AM); Follow-up sweep (Weekdays · 2:00 PM) - Apps: Gmail, Google Calendar, Calendly ### Skagway: CRM hygiene: notes, stages, duplicates Alaskan Klee Kai. Keeps the CRM true. - Just do: Merge exact duplicates; Log calls and emails - Ask first: Change a deal stage; Change a deal amount - Never: Delete a contact or deal - Routines: CRM sweep (Weekdays · 5:00 PM) - Apps: HubSpot, Attio ### Denali: Reporting: pipeline and clients Alaskan Klee Kai. Tells you what's working, every Friday. - Just do: Post the weekly numbers in Slack - Ask first: Send a report to a client - Never: Share one client's numbers with another - Routines: Weekly report (Fridays · 3:00 PM) - Apps: Google Sheets, Slack, HubSpot ## Dashboard - Decide (decide) - This week (metrics): Intros sent, Meetings booked, CRM changes, Accounts added - Work (board) - Ledger (ledger) - Scheduled (schedule) - Computer (computer) ## Workflows it installs - [New-lead intro, with approval](https://alaskanlabs.com/workflows/new-lead-intro.md): When a lead lands in the CRM, the outbound dog reads them, checks recent news, drafts a short first email and sends it only after you approve it, then logs it on the contact. - [Weekly pipeline digest](https://alaskanlabs.com/workflows/weekly-pipeline-digest.md): Every Friday afternoon: deals moved, won and lost, meetings held, and the three deals most at risk with a next step each. Posted where you choose after one look. - [CRM hygiene sweep](https://alaskanlabs.com/workflows/crm-hygiene-sweep.md): Every weekday at 5 the CRM dog turns the day's call notes into stage, amount and next-step changes, flags anything the notes don't support, and applies them after one yes. --- # Dental clinic front desk > A front desk that never misses a recall: booking and reschedules, recall texts, insurance follow-ups, reviews and the website. Every message to a patient comes to Decide first unless a rule says otherwise. Canonical: https://alaskanlabs.com/teams/dental-clinic For: Dental and medical clinics with a front desk. 6 dogs, licence MIT, by Alaskan Labs. JSON: https://alaskanlabs.com/teams/dental-clinic.json ## The dogs ### Sitka (lead): Practice manager: runs the front desk Alaskan Malamute. Keeps the chairs full and the front desk calm. - Just do: Write the morning huddle; Move work between dogs - Ask first: Anything sent to a patient; Changes to the schedule template - Never: Email patient records; Give clinical advice - Routines: Morning huddle (Weekdays · 7:45 AM); End-of-day wrap (Weekdays · 5:30 PM) - Apps: Google Calendar, Gmail, Slack ### Homer: Booking: appointments and reschedules Alaskan Husky. Fills cancellations and handles reschedules. - Just do: Send appointment confirmations; Offer a freed slot to the waitlist - Ask first: Book or move an appointment; Book a new patient - Never: Book over a blocked slot; Cancel an appointment the patient didn't ask to cancel - Routines: Confirm tomorrow's appointments (Weekdays · 4:00 PM); Fill cancellations (Weekdays · 8:30 AM) - Apps: Google Calendar, Twilio, Gmail ### Juneau: Recalls: hygiene recalls and reactivation Alaskan Klee Kai. Brings patients back for their cleanings. - Just do: Send the second recall reminder - Ask first: Send a first recall message; Reactivate patients gone over 18 months - Never: Text before 8 am or after 8 pm; Mention treatment details in a text - Routines: Recall list (Mondays · 9:00 AM) - Apps: Twilio, Gmail, Google Sheets ### Denali: Insurance: claims and follow-ups Alaskan Klee Kai. Chases claims until they're paid. - Just do: Check claim status; Attach X-rays the payer asks for - Ask first: Resubmit a denied claim; Write off a balance - Never: Change a patient's insurance details; Bill a patient for a pending claim - Routines: Claim status check (Tue, Thu · 10:00 AM) - Apps: Gmail, Google Sheets ### Haines: Reviews: asks and replies Alaskan Husky. Gets happy patients to say so, and answers the rest. - Just do: Thank five-star reviewers; Ask happy patients for a review the day after their visit - Ask first: Reply to a review under four stars - Never: Confirm someone is a patient in a public reply; Offer anything in exchange for a review - Routines: Review roundup (Fridays · 12:00 PM) - Apps: Gmail, Twilio ### Yukon: Website: hours, services, posts Alaskan Husky. Keeps the website right and ranking. - Just do: Update holiday hours on the site; Fix typos and broken links - Ask first: Publish a page or post; Change prices on the site - Never: Publish before-and-after photos without consent on file - Routines: Website check (Mondays · 8:00 AM) - Apps: Webflow ## Dashboard - Decide (decide) - This week (metrics): Recall texts sent, Appointments booked, Claims worked, Reviews answered - Work (board) - Ledger (ledger) - Scheduled (schedule) - Computer (computer) ## Workflows it installs - [Appointment recall reminders](https://alaskanlabs.com/workflows/appointment-recall-reminders.md): Every Monday the recall dog finds patients six months past their cleaning, writes each a short text with no treatment details, and sends them after one yes. - [Review reply drafts](https://alaskanlabs.com/workflows/review-reply-drafts.md): Every Friday the reviews dog reads the week's Google reviews on its screen, drafts a reply to each (never confirming who's a patient), and posts them after you approve. - [Insurance claim follow-up](https://alaskanlabs.com/workflows/insurance-claim-follow-up.md): Twice a week the insurance dog checks every open claim on the payer portals, works out what's missing from the denied ones, and resubmits and chases once you approve. --- # Starter team > Seven dogs led by Sitka, a Malamute chief of staff: inbox, outbound, recruiting, finance, support and the website. Routine work happens under your rules; anything with a side effect comes to Decide. Canonical: https://alaskanlabs.com/teams/starter For: Any small company that wants a team on day one. 7 dogs, licence MIT, by Alaskan Labs. JSON: https://alaskanlabs.com/teams/starter.json ## The dogs ### Sitka (lead): Chief of Staff: runs the team, owns the main screen Alaskan Malamute. Keeps the team on track and brings you what needs you. - Just do: Move work between dogs; Write the daily brief - Ask first: Anything that goes to a customer; Changing another dog's rules; Spending money - Never: Delete anything; Sign a contract - Routines: Daily brief (Weekdays · 8:00 AM); Weekly receipt (Fridays · 4:00 PM) - Apps: Slack, Google Calendar, Notion ### Juneau: Inbox: triage, drafts, archive Alaskan Klee Kai. Gets your inbox to zero and drafts the replies. - Just do: Archive newsletters and receipts; Label emails - Ask first: Send any reply; Unsubscribe from a list - Never: Delete an email; Reply to legal or HR threads - Routines: Morning triage (Weekdays · 7:30 AM); Afternoon sweep (Weekdays · 3:00 PM) - Apps: Gmail, Google Calendar ### Kodiak: Outbound: prospects, intros, follow-ups Alaskan Husky. Finds the right people and writes to them. - Just do: Add new leads to the CRM; Log calls in the CRM - Ask first: Send an intro or follow-up; Update a deal's stage - Never: Email someone who unsubscribed; Promise a discount - Routines: Prospect list (Mondays · 9:00 AM); Follow-up sweep (Weekdays · 11:00 AM) - Apps: Gmail, HubSpot, LinkedIn ### Nome: Recruiting: shortlists, scheduling Alaskan Husky. Turns a pile of applicants into a shortlist. - Just do: Tag applicants by role; Send the interview scheduling link - Ask first: Reject a candidate; Book an interview - Never: Discuss salary; Share a candidate's details outside the team - Routines: New applicants (Weekdays · 10:00 AM) - Apps: Gmail, Google Calendar, LinkedIn ### Denali: Finance: invoices, receipts, close Alaskan Klee Kai. Chases invoices and keeps the books ready to close. - Just do: Match receipts to card charges; Send invoice reminders under 30 days late - Ask first: Any refund or payment; An invoice over $5,000 - Never: Pay a new vendor; Change bank details - Routines: Invoice chase (Mon, Thu · 9:00 AM); Weekly cash snapshot (Fridays · 2:00 PM) - Apps: QuickBooks, Stripe, Gmail ### Kenai: Support: replies, refunds within limits Alaskan Klee Kai. Answers customers fast and fixes what's ours to fix. - Just do: Answer how-to questions from the help docs; Refunds up to $50 - Ask first: Refunds over $50; Anything about a bug or outage - Never: Share another customer's data; Promise a feature date - Routines: Support queue sweep (Weekdays · 9:00 AM) - Apps: Zendesk, Stripe, Gmail ### Yukon: Website and SEO: pages, posts, reports Alaskan Husky. Keeps the site right and the posts coming. - Just do: Fix typos and broken links; Post the weekly SEO report to the team - Ask first: Publish a page or post; Change pricing on the site - Never: Change the domain or DNS; Remove a page - Routines: SEO report (Mondays · 8:00 AM) - Apps: Webflow, Slack ## Dashboard - Decide (decide) - This week (metrics): Decisions made, Done under a rule, Sent, Sessions - Work (board) - Ledger (ledger) - Scheduled (schedule) - Computer (computer) ## Workflows it installs - [Morning inbox triage](https://alaskanlabs.com/workflows/morning-inbox-triage.md): Every weekday at 7:30 the inbox dog reads what came in overnight, sorts it into archive, draft and needs-you, and asks once before archiving and sending the drafted replies. - [New-lead intro, with approval](https://alaskanlabs.com/workflows/new-lead-intro.md): When a lead lands in the CRM, the outbound dog reads them, checks recent news, drafts a short first email and sends it only after you approve it, then logs it on the contact. - [Invoice chase](https://alaskanlabs.com/workflows/invoice-chase.md): Twice a week the finance dog finds overdue invoices, drafts a friendly reminder for each (firmer past 30 days) and sends them once you say so. --- # Workflow templates > A trigger and a graph of steps, with at least one Decide: the jobs a team runs. Plain JSON, MIT-licensed. Canonical: https://alaskanlabs.com/workflows - [Appointment recall reminders](https://alaskanlabs.com/workflows/appointment-recall-reminders.md): Every Monday the recall dog finds patients six months past their cleaning, writes each a short text with no treatment details, and sends them after one yes. (Mondays · 9:00 AM) JSON: https://alaskanlabs.com/workflows/appointment-recall-reminders.json - [CRM hygiene sweep](https://alaskanlabs.com/workflows/crm-hygiene-sweep.md): Every weekday at 5 the CRM dog turns the day's call notes into stage, amount and next-step changes, flags anything the notes don't support, and applies them after one yes. (Weekdays · 5:00 PM) JSON: https://alaskanlabs.com/workflows/crm-hygiene-sweep.json - [Insurance claim follow-up](https://alaskanlabs.com/workflows/insurance-claim-follow-up.md): Twice a week the insurance dog checks every open claim on the payer portals, works out what's missing from the denied ones, and resubmits and chases once you approve. (Tue, Thu · 10:00 AM) JSON: https://alaskanlabs.com/workflows/insurance-claim-follow-up.json - [Invoice chase](https://alaskanlabs.com/workflows/invoice-chase.md): Twice a week the finance dog finds overdue invoices, drafts a friendly reminder for each (firmer past 30 days) and sends them once you say so. (Mon, Thu · 9:00 AM) JSON: https://alaskanlabs.com/workflows/invoice-chase.json - [Morning inbox triage](https://alaskanlabs.com/workflows/morning-inbox-triage.md): Every weekday at 7:30 the inbox dog reads what came in overnight, sorts it into archive, draft and needs-you, and asks once before archiving and sending the drafted replies. (Weekdays · 7:30 AM) JSON: https://alaskanlabs.com/workflows/morning-inbox-triage.json - [New-lead intro, with approval](https://alaskanlabs.com/workflows/new-lead-intro.md): When a lead lands in the CRM, the outbound dog reads them, checks recent news, drafts a short first email and sends it only after you approve it, then logs it on the contact. (When crm.lead.created) JSON: https://alaskanlabs.com/workflows/new-lead-intro.json - [Review reply drafts](https://alaskanlabs.com/workflows/review-reply-drafts.md): Every Friday the reviews dog reads the week's Google reviews on its screen, drafts a reply to each (never confirming who's a patient), and posts them after you approve. (Fridays · 12:00 PM) JSON: https://alaskanlabs.com/workflows/review-reply-drafts.json - [Weekly pipeline digest](https://alaskanlabs.com/workflows/weekly-pipeline-digest.md): Every Friday afternoon: deals moved, won and lost, meetings held, and the three deals most at risk with a next step each. Posted where you choose after one look. (Fridays · 3:00 PM) JSON: https://alaskanlabs.com/workflows/weekly-pipeline-digest.json The format: https://alaskanlabs.com/docs/workflow-templates.md --- # Appointment recall reminders > Every Monday the recall dog finds patients six months past their cleaning, writes each a short text with no treatment details, and sends them after one yes. Canonical: https://alaskanlabs.com/workflows/appointment-recall-reminders - For: Dental and medical clinics - Runs: Mondays · 9:00 AM - Run by: the juneau dog (or the team's lead, if the team has no juneau) - Apps: Google Sheets, Twilio - JSON: https://alaskanlabs.com/workflows/appointment-recall-reminders.json (MIT) ## Steps 1. **Read the recall list** (app, Google Sheets) → Pick who's due 2. **Pick who's due** (think) → Anyone due? 3. **Anyone due?** (branch) → if found: Write the texts; if empty: Nobody due this week 4. **Write the texts** (think) → Send this week's recall texts? 5. **Send this week's recall texts?** (decide) → if Send them all: Send the texts; if Not this week: Leave the list for next week 6. **Send the texts** (app, Twilio, changes something: runs only after an approved Decide) → Mark them texted on the recall list 7. **Mark them texted on the recall list** (app, Google Sheets, changes something: runs only after an approved Decide) 8. **Leave the list for next week** (write) 9. **Nobody due this week** (write) --- # CRM hygiene sweep > Every weekday at 5 the CRM dog turns the day's call notes into stage, amount and next-step changes, flags anything the notes don't support, and applies them after one yes. Canonical: https://alaskanlabs.com/workflows/crm-hygiene-sweep - For: Agencies and sales teams - Runs: Weekdays · 5:00 PM - Run by: the skagway dog (or the team's lead, if the team has no skagway) - Apps: HubSpot - JSON: https://alaskanlabs.com/workflows/crm-hygiene-sweep.json (MIT) ## Steps 1. **Read today's call notes** (app, HubSpot) → Read the open deals 2. **Read the open deals** (app, HubSpot) → Work out the updates 3. **Work out the updates** (think) → Any changes? 4. **Any changes?** (branch) → if found: Apply today's CRM updates?; if empty: Log the sweep 5. **Apply today's CRM updates?** (decide) → if Apply all: Apply the updates; if All but the flagged ones: Apply the unflagged updates; if Don't apply: Log the sweep 6. **Apply the updates** (app, HubSpot, changes something: runs only after an approved Decide) → Log the sweep 7. **Apply the unflagged updates** (app, HubSpot, changes something: runs only after an approved Decide) → Log the sweep 8. **Log the sweep** (write) --- # Insurance claim follow-up > Twice a week the insurance dog checks every open claim on the payer portals, works out what's missing from the denied ones, and resubmits and chases once you approve. Canonical: https://alaskanlabs.com/workflows/insurance-claim-follow-up - For: Dental and medical clinics - Runs: Tue, Thu · 10:00 AM - Run by: the denali dog (or the team's lead, if the team has no denali) - Apps: Google Sheets, Gmail - JSON: https://alaskanlabs.com/workflows/insurance-claim-follow-up.json (MIT) ## Steps 1. **Read the open claims** (app, Google Sheets) → Check each claim's status on the payer portals 2. **Check each claim's status on the payer portals** (computer) → Sort paid, pending and denied 3. **Sort paid, pending and denied** (think) → Resubmit the denied claims and chase the late ones? 4. **Resubmit the denied claims and chase the late ones?** (decide) → if Resubmit and chase: Resubmit the denied claims with what was missing; if Only chase the late ones: Email the payers about claims over 30 days; if Not now: Log the claim check 5. **Resubmit the denied claims with what was missing** (computer) → Email the payers about claims over 30 days 6. **Email the payers about claims over 30 days** (app, Gmail, changes something: runs only after an approved Decide) → Update the claims sheet 7. **Update the claims sheet** (app, Google Sheets, changes something: runs only after an approved Decide) → Log the claim check 8. **Log the claim check** (write) --- # Invoice chase > Twice a week the finance dog finds overdue invoices, drafts a friendly reminder for each (firmer past 30 days) and sends them once you say so. Canonical: https://alaskanlabs.com/workflows/invoice-chase - For: Any business that sends invoices - Runs: Mon, Thu · 9:00 AM - Run by: the denali dog (or the team's lead, if the team has no denali) - Apps: QuickBooks, Gmail - JSON: https://alaskanlabs.com/workflows/invoice-chase.json (MIT) ## Steps 1. **Find overdue invoices** (app, QuickBooks) → Anything overdue? 2. **Anything overdue?** (branch) → if found: Draft the reminders; if empty: Nothing overdue 3. **Draft the reminders** (think) → Send these payment reminders? 4. **Send these payment reminders?** (decide) → if Send all of them: Send the reminders; if Only the ones under 30 days late: Send the reminders under 30 days late; if Not now: Note who was chased 5. **Send the reminders** (app, Gmail, changes something: runs only after an approved Decide) → Note who was chased 6. **Send the reminders under 30 days late** (app, Gmail, changes something: runs only after an approved Decide) → Note who was chased 7. **Note who was chased** (write) 8. **Nothing overdue** (write) --- # Morning inbox triage > Every weekday at 7:30 the inbox dog reads what came in overnight, sorts it into archive, draft and needs-you, and asks once before archiving and sending the drafted replies. Canonical: https://alaskanlabs.com/workflows/morning-inbox-triage - For: Anyone whose inbox is a second job - Runs: Weekdays · 7:30 AM - Run by: the juneau dog (or the team's lead, if the team has no juneau) - Apps: Gmail - JSON: https://alaskanlabs.com/workflows/morning-inbox-triage.json (MIT) ## Steps 1. **Read mail since last night** (app, Gmail) → Sort into archive, draft and needs-you 2. **Sort into archive, draft and needs-you** (think) → Anything to act on? 3. **Anything to act on?** (branch) → if found: Archive the newsletters and send the drafted replies?; if empty: Inbox already clear 4. **Archive the newsletters and send the drafted replies?** (decide) → if Archive and send the drafts: Archive the archive pile; if Archive only; I'll send the replies: Archive the archive pile; if Leave my inbox as it is: Log this morning's triage 5. **Archive the archive pile** (app, Gmail, changes something: runs only after an approved Decide) → Send the drafted replies 6. **Send the drafted replies** (app, Gmail, changes something: runs only after an approved Decide) → Log this morning's triage 7. **Archive the archive pile** (app, Gmail, changes something: runs only after an approved Decide) → Log this morning's triage 8. **Log this morning's triage** (write) 9. **Inbox already clear** (write) --- # New-lead intro, with approval > When a lead lands in the CRM, the outbound dog reads them, checks recent news, drafts a short first email and sends it only after you approve it, then logs it on the contact. Canonical: https://alaskanlabs.com/workflows/new-lead-intro - For: Outbound and sales teams - Runs: When crm.lead.created - Run by: the kodiak dog (or the team's lead, if the team has no kodiak) - Apps: HubSpot, Gmail - JSON: https://alaskanlabs.com/workflows/new-lead-intro.json (MIT) ## Steps 1. **Read the new lead** (app, HubSpot) → Look for recent news about them 2. **Look for recent news about them** (news) → Draft the intro 3. **Draft the intro** (think) → Send this intro? 4. **Send this intro?** (decide) → if Send it: Send the intro from your inbox; if Don't send: Mark the lead as skipped 5. **Send the intro from your inbox** (app, Gmail, changes something: runs only after an approved Decide) → Log the email on the contact 6. **Log the email on the contact** (app, HubSpot, changes something: runs only after an approved Decide) 7. **Mark the lead as skipped** (write) --- # Review reply drafts > Every Friday the reviews dog reads the week's Google reviews on its screen, drafts a reply to each (never confirming who's a patient), and posts them after you approve. Canonical: https://alaskanlabs.com/workflows/review-reply-drafts - For: Clinics, restaurants and local businesses - Runs: Fridays · 12:00 PM - Run by: the haines dog (or the team's lead, if the team has no haines) - Apps: none - JSON: https://alaskanlabs.com/workflows/review-reply-drafts.json (MIT) ## Steps 1. **Open Google Business Profile and read this week's reviews** (computer) → Draft the replies 2. **Draft the replies** (think) → Post these review replies? 3. **Post these review replies?** (decide) → if Post them all: Post the replies on Google Business Profile; if Only the five-star thank-yous: Post the five-star thank-yous; if Not now: Log the replies 4. **Post the replies on Google Business Profile** (computer) → Log the replies 5. **Post the five-star thank-yous** (computer) → Log the replies 6. **Log the replies** (write) --- # Weekly pipeline digest > Every Friday afternoon: deals moved, won and lost, meetings held, and the three deals most at risk with a next step each. Posted where you choose after one look. Canonical: https://alaskanlabs.com/workflows/weekly-pipeline-digest - For: Agencies and sales teams - Runs: Fridays · 3:00 PM - Run by: the denali dog (or the team's lead, if the team has no denali) - Apps: HubSpot, Google Calendar, Slack, Gmail - JSON: https://alaskanlabs.com/workflows/weekly-pipeline-digest.json (MIT) ## Steps 1. **Read this week's deals** (app, HubSpot) → Count this week's sales meetings 2. **Count this week's sales meetings** (app, Google Calendar) → Write the digest 3. **Write the digest** (think) → Post this week's pipeline digest? 4. **Post this week's pipeline digest?** (decide) → if Post it in #sales: Post the digest in #sales; if Email it to me only: Email the digest to you; if Skip this week: Save the digest 5. **Post the digest in #sales** (app, Slack, changes something: runs only after an approved Decide) → Save the digest 6. **Email the digest to you** (app, Gmail, changes something: runs only after an approved Decide) → Save the digest 7. **Save the digest** (write) --- # Built by others > Alaskan bots built by others: agent-first products, a CLI and a skill, that any company can add to its Alaskan team. Each joins as a dog by its maker and works under the company’s rules. Canonical: https://alaskanlabs.com/bots None are listed yet. Be the first: build an Alaskan bot. A company adds one in Alaskan from Team → Add a dog → Built by others. Every bot runs each command on a machine of its own, gets only its own secrets, asks first before a command that changes something (by default), and every run is on the record. - Build an Alaskan bot: https://alaskanlabs.com/docs/build-an-alaskan-bot.md - Alaskan bot reference: https://alaskanlabs.com/docs/bot-reference.md --- # Alaskan docs > How Alaskan works: Alaskan for Business, Decide, the Ledger, rules, templates, Alaskan bots and the API. Canonical: https://alaskanlabs.com/docs ## Getting started - [Getting started](https://alaskanlabs.com/docs/getting-started.md): What Alaskan is, the two ways to use it (on your own iPhone, or as a team for a company), and the first ten minutes with Alaskan for Business. - [Alaskans on iPhone](https://alaskanlabs.com/docs/alaskans-on-iphone.md): Your own Alaskan in the iPhone app (a Klee Kai on the free plan, a Husky on Plus), and how to add an Alaskan with its 4-digit code or link. ## Alaskan for Business - [Overview](https://alaskanlabs.com/docs/business.md): A team of AI dogs for a company, in the browser and on iPhone. They do the work under your rules, ask only about what you choose, and keep everything on the record. - [Decide](https://alaskanlabs.com/docs/decide.md): Where the dogs bring what you've asked them to ask about. One card at a time, numbered options, keys 1 to 4, your own words with R, a 10-second undo, and the iPhone app. - [The Ledger](https://alaskanlabs.com/docs/ledger.md): Every decision on the record. What a Ledger row holds, outcomes, the append-only audit trail, and the CSV export with its columns. - [Rules](https://alaskanlabs.com/docs/rules.md): Each dog's three lists, Just do, Ask first and Never, written as plain sentences. How they decide what happens without you, what waits in Decide, and what's refused. - [The company computer](https://alaskanlabs.com/docs/company-computer.md): One computer per company, one screen per dog. Shared sign-ins and files, a clone for a risky job, and a private computer for finance or HR. ## Templates - [Overview](https://alaskanlabs.com/docs/templates.md): Alaskan's two template kinds, team templates and workflow templates. Plain JSON, MIT-licensed, installable from the gallery and free to share or sell. - [Team template format](https://alaskanlabs.com/docs/team-templates.md): The alaskan.team JSON format. Dogs with jobs, personas, rules, routines and apps; the dashboard's views; the workflows a team installs; and sample work. - [Workflow template format](https://alaskanlabs.com/docs/workflow-templates.md): The alaskan.workflow JSON format. A trigger, nodes (app, search, news, page, computer, think, decide, write, wait, branch) and edges, with at least one Decide. ## Build - [Build an Alaskan bot](https://alaskanlabs.com/docs/build-an-alaskan-bot.md): Package an agent-first CLI and its skill once, and any company can add it to its Alaskan team. The manifest, SKILL.md, the alaskan-labs CLI, review, how a bot runs, how companies add it and how you earn. - [Alaskan bot reference](https://alaskanlabs.com/docs/bot-reference.md): Every field of an Alaskan bot's manifest (the alaskan field in package.json) with its limits and defaults, what sends a version back to review, each run, the workflow step, and the creator, marketplace and workspace API. - [Connect your service](https://alaskanlabs.com/docs/connect-your-service.md): Your product, headless. Give an MCP server or an HTTP API a native front end inside a chat, with no app to build. What you need, how to paste it in, the preview, publishing and review. ## API - [API reference](https://alaskanlabs.com/docs/api.md): The Alaskan for Business API (v1). Signing in with email, linking a browser or an iPhone, workspaces and dogs, Decide and undo, the Ledger and its CSV export, templates and workflows. ## For AI agents - [For AI agents](https://alaskanlabs.com/docs/for-ai-agents.md): How agents can read alaskanlabs.com. llms.txt and llms-full.txt, a Markdown twin of every page, the templates and Alaskans as JSON, and the crawler policy. --- # Getting started > What Alaskan is, the two ways to use it (on your own iPhone, or as a team for a company), and the first ten minutes with Alaskan for Business. Canonical: https://alaskanlabs.com/docs/getting-started Alaskan Labs makes **Alaskan**: AI agents you talk to like people, each one shown as an Alaskan dog. We call the agents Alaskans. There are two ways to use it. - **For yourself, on iPhone.** Your own Alaskan lives in the iPhone app. It answers in a few sentences, looks things up, and runs the jobs you give it. Each job is an Alaskan too, added with a 4-digit code. See [Alaskans on iPhone](/docs/alaskans-on-iphone). - **For a company: Alaskan for Business.** A team of AI dogs with jobs (inbox, outbound, recruiting, finance, support, the website), led by a chief of staff. It runs in the browser at [alaskan.ai](https://alaskan.ai), and the same iPhone app works with it. See [Alaskan for Business](/docs/business). ## Your first ten minutes with Alaskan for Business 1. **Sign up** at [alaskan.ai/signup](https://alaskan.ai/signup) with your work email. We email you a link and a 6-digit code to sign in; there's no password and no phone needed. 2. **Create the workspace from a team template.** The [Starter team](/teams/starter) has seven dogs led by Sitka, an Alaskan Malamute; there are templates for a [dental clinic front desk](/teams/dental-clinic) and an [agency outbound team](/teams/agency-outbound). The workspace comes with the template's dogs, its workflows and sample work, marked as sample, so it looks alive on day one. It starts as a trial. 3. **Let the team work, and check Today.** The dogs get on with their jobs. Today says how many things need you and what was done since yesterday. Start opens them in Decide, one card at a time: press a number to choose, or R to answer in your own words. See [Decide](/docs/decide). 4. **Set the rules.** Each dog has three lists: **Just do**, **Ask first** and **Never**. Rules are plain sentences; what a dog may just do, it does without asking. See [Rules](/docs/rules). 5. **Read the Ledger,** in Records. Every decision is on the record: what the dog proposed, who chose (you, or which rule), why, and how it turned out. See [The Ledger](/docs/ledger). 6. **Bring your iPhone, if you like.** In the workspace's menu, choose **Use it on your iPhone**: the browser shows a code like `ABCD-2345` and a QR code. On the iPhone, open Alaskan, go to Settings → Alaskan on the web → Link a browser, and type it. Your iPhone joins the workspace as a member, with a pinned Decide chat and the team as chats. A code lasts 10 minutes and works once. Started on the Alaskan iPhone app? You can sign a browser in as your phone instead: the browser shows a code, and you type it on the phone the same way. ## What works today, and what comes next Version 1 is honest about its edges. **Works today:** signing up and in on the web with an email; bringing an iPhone into a workspace with a code; signing a browser in as a phone; a workspace with its starting team and sample work; chatting with each dog; Decide on the web and on the phone, with undo; the Ledger with outcomes and CSV export; rules per dog; workflows installed from templates and run by hand, with their Decide steps. **Comes next:** dogs operating the company computer's browser on their own; carrying out what you approve in a chat (today it's recorded in the Ledger, and only a workflow's app steps act); routines and workflow schedules firing on their own (they're stored, and shown with their next time); more than one workspace per person; inviting people by email; each dog's own email address and phone number. ## Where things live - The app: [alaskan.ai](https://alaskan.ai), in the browser, and the Alaskan app on iPhone. - This site: the [Alaskans](/alaskans), [team templates](/teams), [workflow templates](/workflows), these docs and the [blog](/blog). - For agents: [llms.txt](/llms.txt), and every page here as Markdown (add `.md` to the address). See [For AI agents](/docs/for-ai-agents). --- # Alaskans on iPhone > Your own Alaskan in the iPhone app (a Klee Kai on the free plan, a Husky on Plus), and how to add an Alaskan with its 4-digit code or link. Canonical: https://alaskanlabs.com/docs/alaskans-on-iphone On iPhone, Alaskan is a messenger where the chats are AI agents. You talk to one agent, your own Alaskan. It answers on your phone, looks up what it needs, and runs the jobs you give it. Each job is an Alaskan of its own, built once and added by anyone with a 4-digit code. ## The dog is the plan - **Free plan: an Alaskan Klee Kai.** A monthly allowance of Claude. - **Plus: an Alaskan Husky.** A bigger model and a larger allowance. - **Alaskan for Business: an Alaskan Malamute** leading a team, for a company. See [Alaskan for Business](/docs/business). Plus is bought in the App Store. Business is sold to companies on the web; people at a company bring their workspace onto the iPhone with a code from the web. ## Adding an Alaskan Every Alaskan has a 4-digit code. Send the code to your Alaskan and it says what that Alaskan does and asks whether to add it; one tap adds it. Every Alaskan also has a link, `https://alaskan.ai/b/`. With the app installed, the link opens the app with the code already sent. The **Add in Alaskan** buttons on [this site's Alaskans](/alaskans) are those links. Before you add an Alaskan made by someone else, the app shows who made it, where your messages go, who writes its AI replies, and its age rating. ## Two kinds of Alaskan - **Jobs.** Most of Alaskan's own Alaskans are jobs: a trigger, a fixed plan of lookups and app reads, a shape for the result, and a budget a run may spend. [Research brief](/alaskans/research-brief) answers when you ask; [Competitor watch](/alaskans/competitor-watch) checks a page every weekday morning and speaks only when something changed; [Lead finder](/alaskans/lead-finder) brings a table of companies every Monday. No model picks tools at run time, so a run costs what its list says: most cost a cent or less. - **Chats and rooms.** [Journal](/alaskans/journal), [Standup](/alaskans/standup), [Meeting notes](/alaskans/meeting-notes) and [Leads](/alaskans/leads) are conversations with commands and forms. Standup works in a room, where a team answers one Alaskan together and sees everyone's answers. A job asks its set-up questions once, in its chat. After that, Run now runs it on demand, and a scheduled one runs on its schedule. ## Making your own Describe the job to your Alaskan ("watch my competitor's pricing page every morning") and it drafts one: what it asks, when it runs, what it brings back. You change it in plain words and publish it with its own code. Alaskans that use AI and are published for everyone wait for a moderator first. --- # Alaskan for Business > A team of AI dogs for a company, in the browser and on iPhone. They do the work under your rules, ask only about what you choose, and keep everything on the record. Canonical: https://alaskanlabs.com/docs/business Alaskan for Business gives a company a sled team: a lead dog, the chief of staff, and specialist dogs for the inbox, outbound, recruiting, finance, support and the website. You talk to them like coworkers, on the web at [alaskan.ai](https://alaskan.ai) or in the iPhone app. Each dog has: - **a job** ("Support: replies, refunds within limits"), - **its own rules**: what it may just do, what it must ask first, and what it must never do ([Rules](/docs/rules)), - **its routines** (a support queue sweep every weekday at 9:00), - **the apps it may use** (Gmail, HubSpot, Stripe, Slack and so on), - **a screen on the company's computer** ([The company computer](/docs/company-computer)). The dogs do the work. Each one works under three lists of rules you set: what it may **just do**, what to **ask first**, and what it must **never** do ([Rules](/docs/rules)). The team templates start them asking about things like spending money, messages that leave the company and anything that can't be undone; you move things to Just do as you come to trust them. What they ask about comes to **Decide** as a card with numbered options ([Decide](/docs/decide)), and **Today** shows how many things need you. Everything they do, and every decision, goes into the **Ledger** with the dog's reasoning, the evidence, who decided and, later, how it turned out ([The Ledger](/docs/ledger)). ## The starting team The [Starter team](/teams/starter) template: | Dog | Job | Breed | |---|---|---| | Sitka | Chief of Staff: runs the team, owns the main screen | Alaskan Malamute | | Juneau | Inbox: triage, drafts, archive | Alaskan Klee Kai | | Kodiak | Outbound: prospects, intros, follow-ups | Alaskan Husky | | Nome | Recruiting: shortlists, scheduling | Alaskan Husky | | Denali | Finance: invoices, receipts, close | Alaskan Klee Kai | | Kenai | Support: replies, refunds within limits | Alaskan Klee Kai | | Yukon | Website and SEO: pages, posts, reports | Alaskan Husky | Other templates start a [dental clinic front desk](/teams/dental-clinic) or an [agency outbound team](/teams/agency-outbound). Any dog from any template can be hired onto your team, up to 12. ## What a company gets - everyone at the company, - up to 12 dogs, - one company computer, - AI and tool usage within a fair-use allowance, - connectors to your apps, - the Ledger and its export, - a setup with the lead dog. A workspace starts as a trial. [Sign up](https://alaskan.ai/signup) to start one. You own what the team does. The Ledger exports as CSV at any time, and templates are plain JSON you can take anywhere. ## On the web and on iPhone You sign up and work in the browser at [alaskan.ai](https://alaskan.ai). The app is quiet on purpose: the dogs do the jobs, and it asks you only for what needs a person. There are four places: - **Today** answers one question, "does anything need me?": how many things need you (or "Nothing needs you"), about how long they'll take, and Start. Below that, what the team finished since yesterday, one plain sentence per dog, and one line about what's running now. - **Decide** shows one card at a time, in focus: the question, the facts and the numbered options. The dog's reasoning is behind "Why?", and the evidence and thread are behind "Details". - **Team**: the dogs, each with its job and one line on what it's doing. A dog's page is a chat with it; its rules, routines and record are in Details. - **Records**: the Ledger, Sessions (each job and what came of it) and Scheduled (what runs when). Search (⌘K) jumps anywhere. Use it on your iPhone, Templates and Settings are in the workspace's menu. The iPhone app is an option. **Use it on your iPhone**, in the workspace's menu, shows a code; type it in the app (Settings → Alaskan on the web → Link a browser) and the iPhone joins the workspace as a member, with a pinned Decide chat holding the same cards and the company's dogs as chats. Decide something on the web and the phone shows it decided, and the other way round. ## Signing in There are no passwords. You sign in on the web with your email: a link, or the 6-digit code in the same email. Each person's iPhone joins with a code from the web. If you started on the Alaskan iPhone app, a browser can be signed in as your phone with a code instead. Signed-in browsers are listed in Settings and can be signed out there. --- # Decide > Where the dogs bring what you've asked them to ask about. One card at a time, numbered options, keys 1 to 4, your own words with R, a 10-second undo, and the iPhone app. Canonical: https://alaskanlabs.com/docs/decide The dogs do their work under the rules you set. Decide is where they bring what those rules say to ask about first (the team templates start with things like spending money, messages that leave the company and anything that can't be undone). Its count is the only badge in the app, and Today's Start opens it. ## Focus mode Decide shows one card at a time, in the middle of the page, with "1 of 3" above it; J and K move between cards. The card is the question, the facts and the options, and a box to say it in your own words. The dog's reasoning is one line behind **Why?**; the evidence, the thread and your record with this dog are behind **Details**. ## A card Each card says: - **who** is asking (the dog) and **where it came from** ("Support · Ticket #4182"), - **what kind** of thing it is: leaves the company, calendar, internal and reversible, spends money, goes public, - **the question**, in one line ("Refund $240 to Maya Patel? It's over your $50 limit."), and a sentence of summary, - **what would change**, as rows (a CRM field from one value to another, a refund amount, an email's recipients), with anything doubtful flagged, - **one to four numbered options**, each with a line on what it does. ## Choosing - **1–4** chooses that option. - **↑ ↓** move the outline between options, and **↵** chooses the outlined one. - **R** opens the box to answer in your own words. A typed answer is kept exactly as you wrote it, counts as approved, and the dog works from exactly what you wrote. - **J** and **K** go to the next and previous card. - **⌘Z** undoes. Options are either approving or declining. Choosing a declining option ("Not now", "Skip Sean") records the card as declined. ## Undo Every decision has a 10-second undo. - Undo **your own answer** and the card goes back into Decide as it was, waiting for you, on the web and the phone. - Undo **a rule's** decision and it's marked undone, and stays in the Ledger as undone. After 10 seconds it's too late to undo, and the decision stands. A card with an expiry (a fare hold that runs out at 6 pm) expires if nobody answers in time. ## Where cards come from - **From a chat.** When you talk to a dog, it can propose something. The dog's rules are applied first: a **Never** rule refuses it outright, a **Just do** rule decides it at once (with the undo), and anything else comes to Decide. - **From a workflow.** A workflow template has at least one Decide step. When a run reaches it, a card is created and the run waits. Once you choose and the undo window has passed, the run carries on along the option you chose. See [Workflow template format](/docs/workflow-templates). Today, what you approve from a chat is recorded in the Ledger; a workflow's app steps are what act on it. ## On iPhone The iPhone app has the same Decide, as a pinned chat with the same cards and numbered options. A card decided on the web shows as decided on the phone, and an undo on either puts it back on both. --- # The Ledger > Every decision on the record. What a Ledger row holds, outcomes, the append-only audit trail, and the CSV export with its columns. Canonical: https://alaskanlabs.com/docs/ledger The Ledger, in Records, is one row per decision: what a dog proposed, the options, what was chosen and by whom, why, and how it turned out. It's how you see what your team did while you weren't looking, and how you check that the rules you set are the right ones. ## A row - **When**, and **which dog**. - **The decision**: its title, its kind (send, update, book, spend, publish or other) and where it came from. - **Chosen**: the option, or your own words if you typed an answer. - **By**: a person (by name), or the rule that decided it, in the rule's own words ("Just do: Refunds up to $50", "Never: Promise a feature date"). - **Reasoning and evidence**: why the dog proposed it, and what it looked at. - **Outcome**: good, bad, unknown, or still being checked, with a note. Filters narrow it to one dog, to decisions by people or by rules, to undone ones, or to what's still waiting; search covers titles, reasoning and typed answers. ## Outcomes A decision isn't finished when it's made. Mark an outcome **good**, **bad** or **unknown** with a note ("She replied the same day and booked a call", "No replies after five days"). Over time, the Ledger shows which kinds of decision go well, which is what tells you a rule could move from Ask first to Just do. ## The audit trail Behind each row is its history, oldest first: seeded, proposed, decided by a rule, refused, decided by a person, undone, outcome, expired. Each event says who did it: a person (by their member id within the workspace, never their Alaskan ID), a rule, a dog or the system. The trail is append-only; the database refuses to change or delete it. ## Export The whole Ledger downloads as CSV, newest first, with these columns: ``` id, created_at, dog, kind, title, summary, source, status, chosen, chosen_label, typed, decided_by_kind, decided_by, decided_at, reasoning, evidence, outcome, outcome_note, outcome_checked_at, sample ``` A cell that starts with `=`, `+`, `-` or `@` gets a leading `'`, so a spreadsheet won't run it as a formula. Sample rows from a team template are marked in the `sample` column. Through the API: `GET /v1/decisions/export.csv`. See [API reference](/docs/api). --- # Rules > Each dog's three lists, Just do, Ask first and Never, written as plain sentences. How they decide what happens without you, what waits in Decide, and what's refused. Canonical: https://alaskanlabs.com/docs/rules Every dog has three lists of rules, written as plain sentences: - **Just do**: happens at once, with a 10-second undo. *"Refunds up to $50." "Archive newsletters and receipts."* - **Ask first**: comes to [Decide](/docs/decide). *"Refunds over $50." "Send any reply." "Publish a page or post."* - **Never**: refused, and recorded as refused. *"Promise a feature date." "Delete an email." "Change bank details."* ## How a rule decides When a dog proposes something, it names the rule it falls under, in the rule's own words. Then: 1. A **Never** rule it named, or one whose words all appear in the proposal, refuses it. The Ledger records it as declined, decided by that rule ("Never: Promise a feature date"). 2. A **Just do** rule it named decides it at once: the first approving option, with a 10-second undo. The Ledger records it as decided by that rule. 3. Anything else waits in Decide for a person. Just-do work happens without you and shows up on Today as a sentence and in the Ledger as a row. A new team starts careful: the templates have it ask about things like spending money, messages that leave the company and anything that can't be undone. As the Ledger shows what goes well, move those things to Just do and the team asks less. ## Writing good rules - **Name the limit.** "Refunds up to $50" and "Refunds over $50" split cleanly; "small refunds" doesn't. - **Start strict.** Put things in Ask first, watch them in the [Ledger](/docs/ledger) for a week, then move what always goes well to Just do. - **Use Never for the irreversible.** Deleting, signing, changing bank details, sharing one customer's data with another. ## Changing rules Rules are edited on each dog's page: add a sentence to any list, or remove one. A team template sets each dog's starting rules ([Team template format](/docs/team-templates)). Through the API, `POST /v1/workspace/dog {id, rules}` replaces all three lists at once. See [API reference](/docs/api). --- # The company computer > One computer per company, one screen per dog. Shared sign-ins and files, a clone for a risky job, and a private computer for finance or HR. Canonical: https://alaskanlabs.com/docs/company-computer Each company gets one computer in the cloud: a desktop with a browser. Every dog works in its own screen there, with its own browser window and profile. ## One computer, one screen per dog - **Sign in once.** A person signs in to Gmail, LinkedIn or the CRM on the company computer once, and every dog can use it. - **Shared files.** What one dog downloads, another can read. - **Watch any screen.** "Watch the screen", from a dog or a session, shows that dog's screen and what it's doing on it. ## Two escape hatches - **Clone for a job.** When two dogs need the same app at once, or a run is risky, the computer is cloned for that one session and thrown away after. - **A private computer.** A dog that handles finance or HR can be given a computer of its own. It's off by default. Why one computer and not one per dog: separate computers for every dog would multiply the cost and the sign-ins for an isolation most small companies don't need. The private computer is there when they do. ## Today In version 1, the computer is started and stopped from Settings, and each dog's screen shows what that dog is working on. It stays off the main navigation: the dogs do the work there, and you look when you want to. Dogs operating the browser on their own comes next. Until then, the work that acts on your apps goes through connectors: a workflow's app steps, after an approved [Decide](/docs/decide). Through the API: `POST /v1/workspace/computer`, `/computer/start` and `/computer/stop`. See [API reference](/docs/api). --- # Templates > Alaskan's two template kinds, team templates and workflow templates. Plain JSON, MIT-licensed, installable from the gallery and free to share or sell. Canonical: https://alaskanlabs.com/docs/templates Alaskan for Business is set up from templates, and the templates are open: plain JSON under the **MIT licence**, so anyone can build, share or sell them without asking. There are two kinds. ## Team templates A whole setup for one kind of business, the way a Notion template is: its dogs (each with a job, a persona, rules, routines and apps), its dashboard, the workflows it installs, and sample work so a new workspace looks alive on day one. `kind: "alaskan.team"`. Browse them in [Team templates](/teams); the format is in the [Team template format](/docs/team-templates). ## Workflow templates A trigger and a graph of steps, the way an n8n workflow is: app actions, lookups, a browser task, thinking, waiting, branching, and at least one **Decide** step, an approval gate where the run waits for a person. `kind: "alaskan.workflow"`. Browse them in [Workflow templates](/workflows); the format is in the [Workflow template format](/docs/workflow-templates). ## Getting them - Every template has a page on this site, and its JSON at the page's address plus `.json`: [/teams/starter.json](/teams/starter.json), [/workflows/invoice-chase.json](/workflows/invoice-chase.json). - Through the API: `GET /v1/templates` lists them all; `GET /v1/templates/team/` and `GET /v1/templates/workflow/` return one whole. These need no sign-in. - In the app: a workspace starts from a team template, `POST /v1/workspace/hire` adds one dog from any team template, and `POST /v1/workspace/workflows/install` adds a workflow. ## What's ours and what's yours The template formats and the starter templates are MIT-licensed. Alaskan Cloud (hosting, the managed company computer, phone access and setup) is the paid product. --- # Team template format > The alaskan.team JSON format. Dogs with jobs, personas, rules, routines and apps; the dashboard's views; the workflows a team installs; and sample work. Canonical: https://alaskanlabs.com/docs/team-templates A team template is one JSON file, `teams/.json`, with `kind: "alaskan.team"`. Slugs are lower-case letters, digits and dashes, and the file is named after its slug. ```json { "kind": "alaskan.team", "version": 1, "slug": "dental-clinic", "name": "Dental clinic front desk", "for": "Dental and medical clinics with a front desk", "summary": "…", "author": { "name": "Alaskan Labs" }, "license": "MIT", "dogs": [{ "key": "homer", "name": "Homer", "job": "Booking: appointments and reschedules", "breed": "husky", "coat": "ember", "lead": false, "tagline": "…", "persona": "…", "rules": { "justDo": ["Send appointment confirmations"], "ask": ["Book or move an appointment"], "never": ["Book over a blocked slot"] }, "routines": [{ "title": "Confirm tomorrow's appointments", "when": "weekdays 16:00" }], "connectors": ["googlecalendar", "twilio", "gmail"] }], "dashboard": { "views": [{ "type": "metrics", "title": "This week", "items": [ { "label": "Appointments booked", "source": "ledger", "match": { "dog": "homer", "kind": "book", "status": ["approved", "auto"], "since": "week" } } ] }] }, "workflows": ["appointment-recall-reminders"], "sample": { "decisions": [], "sessions": [], "messages": [] } } ``` ## The shape ``` TeamTemplate { kind: "alaskan.team", version: 1, slug, name, for, summary, author: {name}, license, dogs: [Dog], dashboard: {views: [View]}, workflows: [slug], sample: {decisions, sessions, messages} } Dog { key, name, job, breed, coat, lead?, tagline, persona, rules: {justDo, ask, never}, routines: [{title, when}], connectors: [app] } View { type: "decide" | "metrics" | "board" | "ledger" | "computer" | "schedule", title?, items?: [{label, source: "ledger" | "sessions", match: {dog?, kind?, status?, since?: "today" | "week"}}], columns?: [string] } ``` ## Dogs - **1 to 12 dogs**, exactly one with `lead: true`. - `breed` is `malamute`, `husky` or `kleekai`; `coat` is `aurora`, `ember`, `glacier` or `twilight`. Together they pick the dog's picture. - `job` is "Area: what it does" ("Booking: appointments and reschedules"). The part before the colon is the dog's role tag in the sidebar. - `persona` is what the dog is told about how it works. - `rules` are plain sentences: `justDo` happens at once with a 10-second undo, `ask` comes to Decide, `never` is refused. See [Rules](/docs/rules). - `connectors` are app slugs: `gmail`, `googlecalendar`, `slack`, `hubspot`, `attio`, `stripe`, `quickbooks` and so on. ## When Routines and scheduled workflows use one small format: `hourly`, or days and a 24-hour time. ``` daily 07:30 weekdays 08:00 weekends 10:00 mon 09:00 mon,thu 16:00 ``` Times are in the workspace's time zone. ## The dashboard `dashboard.views` is the list of views the workspace opens on, in order: `decide`, `metrics`, `board`, `ledger`, `computer` or `schedule`. A `metrics` item counts decisions (`source: "ledger"`) or sessions (`source: "sessions"`) that match a dog (by key), a kind, a status (one or a list) and `since` (`today` or `week`). The workspace returns each item with its value. A `board` has `columns`, which are session statuses (`queued`, `running`, `needs_you`, `done`). ## Workflows `workflows` lists workflow template slugs. They're installed with the team. See [Workflow template format](/docs/workflow-templates). ## Sample work `sample` is work that makes a new workspace look real until real work replaces it. Every row it makes is marked `sample: true`, and sample chat lines are never sent to a model. Times count back from when the workspace is made (`agoMinutes`, `decidedAgoMinutes`); `expiresInMinutes` and an outcome's `checkInMinutes` count forward. `{{owner}}` becomes the person who made the workspace and `{{company}}` its name. - `decisions`: `dog`, `kind`, `title`, `summary`, `source`, `items` (`{label, field, from?, to, flagged?}`), 1 to 4 `options` (`{key, label, detail?, effect?: "approve" | "decline"}`), `reasoning`, `evidence` (`{label, url?}`), `thread` (`{from, text, agoMinutes?}`) and `status`. A decided one adds `decidedBy` (`{kind: "person" | "rule", name}`), `chosen` or `typed`, and optionally `outcome` (`{status, note}`). - `sessions`: `dog`, `title`, `status` (`running`, `needs_you`, `queued`, `done`), `minutes`, `costCents` and `steps` (`{kind: "look" | "think" | "act" | "result", text}`). - `messages`: `dog`, `role` (`user` or `dog`), `text`. ## Validation The server reads every template when it starts and refuses to start if one doesn't validate, naming each problem. Start from [the Starter team's JSON](/teams/starter.json). --- # Workflow template format > The alaskan.workflow JSON format. A trigger, nodes (app, search, news, page, computer, think, decide, write, wait, branch) and edges, with at least one Decide. Canonical: https://alaskanlabs.com/docs/workflow-templates A workflow template is one JSON file, `workflows/.json`, with `kind: "alaskan.workflow"`: a trigger and a graph of nodes. A run walks the graph from the node nothing points to, writing one step of a session per node, and follows one edge at a time. ```json { "kind": "alaskan.workflow", "version": 1, "slug": "new-lead-intro", "name": "New-lead intro, with approval", "summary": "…", "for": "Outbound and sales teams", "dog": "kodiak", "trigger": { "type": "event", "event": "crm.lead.created" }, "nodes": [ { "id": "lead", "type": "app", "title": "Read the new lead", "app": "hubspot", "action": "HUBSPOT_LIST_CONTACTS", "input": { "limit": 1 } }, { "id": "draft", "type": "think", "title": "Draft the intro", "prompt": "Write a first email …" }, { "id": "approve", "type": "decide", "kind": "send", "title": "Send this intro?", "prompt": "{{draft}}", "options": [{ "key": "send", "label": "Send it" }, { "key": "skip", "label": "Don't send", "effect": "decline" }] }, { "id": "send", "type": "app", "title": "Send the intro", "app": "gmail", "action": "GMAIL_SEND_EMAIL", "write": true, "input": { "body": "{{draft}}" } }, { "id": "skipped", "type": "write", "title": "Mark the lead as skipped" } ], "edges": [["lead", "draft"], ["draft", "approve"], ["approve", "send", "send"], ["approve", "skipped", "skip"]] } ``` ## The shape ``` WorkflowTemplate { kind: "alaskan.workflow", version: 1, slug, name, summary, for?, author?, license?, dog, trigger: {type: "schedule" | "event" | "manual", when?, event?}, nodes: [{id, type, title, app?, action?, write?, input?, prompt?, query?, url?, kind?, options?: [{key, label, effect?}]}], edges: [[from, to, when?]] } ``` ## Who runs it `dog` is the key of the dog that runs it. In a team without that dog, the lead runs it. ## Triggers - `schedule`, with `when` (`weekdays 07:30`, `mon,thu 09:00`; see [the when format](/docs/team-templates#when)), - `event`, with `event` (`crm.lead.created`), - `manual`. In version 1 every workflow can be run by hand. Schedules and events are recorded for what comes next. ## Nodes Each node has an `id`, a `type` and a `title`. | Type | What it does | |---|---| | `app` | An action in a connected app (`app` slug, `action` slug, `input`). A read runs when the app is connected. Anything that changes the app is marked `"write": true` and runs only after a `decide` in the same run was approved. | | `search`, `news` | A web or news search (`query`). | | `page` | Reads a page (`url`). | | `computer` | A browser task on the dog's screen, in plain words. | | `think` | The model turns what the run has so far into the next thing (`prompt`). | | `decide` | An approval gate. It becomes a card in [Decide](/docs/decide) with these `options` (1 to 4, each `key` and `label`, optional `effect: "decline"`), and the run waits. `kind` and `prompt` (the card's summary) are optional. | | `write` | Records the result with the session. | | `wait` | A pause. | | `branch` | Leaves by the edge whose `when` is `found` (the step before produced something) or `empty`. | Every workflow has at least one `decide`. ## Edges `[from, to]` or `[from, to, when]`. Out of a `decide`, `when` is the chosen option's key (or its number, 1 to 4). Out of a `branch`, it's `found` or `empty`. There are no loops, so a run always ends. When a decision is made and its 10-second undo has passed, the run carries on along the edge for the chosen option. A typed answer, an expiry or an undone rule ends the run. ## Text in prompts and inputs `{{company}}`, `{{today}}`, `{{dog}}`, `{{last}}` (the step before) and `{{}}` (that step's output). ## When something isn't connected Anything the server can't do (no lookups, no model key, an app that isn't connected, the computer in demo mode) is simulated, and the step says so in the session: "Simulated: …". A run never pretends. ## Examples All eight starter workflows are in [Workflow templates](/workflows), each with its graph and its JSON: [Invoice chase](/workflows/invoice-chase), [Morning inbox triage](/workflows/morning-inbox-triage), [New-lead intro](/workflows/new-lead-intro). --- # Build an Alaskan bot > Package an agent-first CLI and its skill once, and any company can add it to its Alaskan team. The manifest, SKILL.md, the alaskan-labs CLI, review, how a bot runs, how companies add it and how you earn. Canonical: https://alaskanlabs.com/docs/build-an-alaskan-bot More products are being made for AI agents first: a command-line tool, and a skill that tells an agent how to use it. An **Alaskan bot** is that product, packaged once, that any company can add to its Alaskan workspace. It joins the team as a dog "by" you, and the company's dogs do the work with it under the company's rules. ## What an Alaskan bot is An npm package with three things in it: 1. **A CLI**, the package's `bin`, ideally with `--json` output. It's your product: it talks to your service. It reads its secrets from environment variables, and exits 0 when it worked and non-zero when it didn't. 2. **A skill**, `SKILL.md`: plain instructions for a dog on when and how to use the CLI, the same kind of file agent-first products already ship for coding agents. It must be in the published package. 3. **A manifest**: an `alaskan` field in `package.json` that says what the team page and the marketplace show, which commands a dog may run, what they need and which ones change things. ## Before you start - A product with a CLI that you publish to npm. - An account on [alaskan.ai](https://alaskan.ai/signup): sign up with your email, the same sign-in as the app. In **Settings → Build**, make a creator token. It's shown once, so copy it then; you can hold up to 5 and revoke any of them there. - Node.js, for `npx`. ## 1. Add the manifest In your package's folder: ```sh npx alaskan-labs init ``` It adds an `alaskan` field to `package.json` and a `SKILL.md` to start from: the name from your package name, the tagline and about from its description, a `--help` command for your first bin, and free. It never replaces an `alaskan` field you already have unless you add `--force`. Fill in anything it leaves starting with `TODO`; those are refused until you do. Here is a whole one, for a made-up conversion-testing CLI called Acme Convert: ```json { "name": "acme-convert", "version": "1.4.2", "author": "Acme Convert", "bin": { "acme-convert": "bin/acme-convert.js" }, "alaskan": { "name": "Acme Convert", "job": "Conversion", "tagline": "Tries page variants and routes each visitor to the one they respond to.", "about": "Runs variant tests on your site and reports what converts, with attribution by source.", "breed": "husky", "coat": "ember", "skill": "SKILL.md", "setup": ["acme-convert init --yes"], "commands": [ { "id": "report", "title": "Conversion report", "run": "acme-convert report --json --days {{days}}", "inputs": [{ "id": "days", "label": "Days", "default": "7" }] }, { "id": "variants", "title": "Try page variants", "run": "acme-convert variants create --page {{page}} --json", "inputs": [{ "id": "page", "label": "Page URL" }], "writes": true, "kind": "update" } ], "secrets": [ { "id": "ACME_CONVERT_TOKEN", "label": "Acme Convert API token", "url": "https://acme.example/settings/tokens" } ], "network": ["api.acme.example"], "pricing": { "model": "own-account", "note": "Uses your Acme Convert plan." } } } ``` Every field and limit is in the [Alaskan bot reference](/docs/bot-reference). The ones to get right: - **commands**: 1 to 12. Each has an `id`, a `title`, and a `run` line that starts with one of your package's own bins. `run` is plain words and `{{input}}` placeholders, nothing a shell reads as syntax (no quotes, `$`, `;`, `|`, `&`, `>` and the like). Every input must be used in `run`, and every value is passed as one single-quoted argument. A value that is a whole argument can't start with `-`, so write `--flag={{input}}` where a value might. A dog can run your bot only through these commands. - **titles**: a company's rules for your bot are written in your commands' titles, so name each one the way a person would say it. - **writes**: mark every command that changes something outside the machine with `"writes": true`, and give it a `kind` (`update`, `send`, `book`, `spend`, `publish` or `other`). Those commands ask the company first. - **secrets**: up to 5 environment variables your CLI needs, each with an `id` like `ACME_CONVERT_TOKEN`, a label and an `https` link to where to get it. - **network**: every host your CLI talks to, like `api.acme.example` or `*.acme.example`. The company sees this list before it adds your bot. - **author**: your package's `author` is the name the marketplace shows as who made it (without one, the bot's `name`). Left out, `breed` is `husky`, `coat` is `aurora` (a Malamute's coat is ignored: Malamutes have one), `pricing` is `free`, and there's no setup, no secrets and no hosts. ## 2. Write the skill `SKILL.md` is what the dog that represents your bot reads to decide which command to run and with what inputs. The dog sees it marked as yours, not as the company's instructions, and the company's rules apply to every run. Write it for an agent, in plain Markdown: when each command is the right one, what its inputs mean, what its output looks like, and what to do when it fails. If you already ship a skill for another agent, start from it, and speak in terms of the commands in your manifest. ```markdown # Acme Convert Use this when someone asks how a page converts or wants to test a change to it. - **Conversion report** (`report`): what converted over the last `days` days, by source. Read-only. Start here before suggesting a change. - **Try page variants** (`variants`): starts a variant test on `page`. It changes the live site, so propose it with the report's numbers as the reason. If a command says the token is missing or expired, ask for a new Acme Convert API token. ``` The skill must be in the package you publish: if your `package.json` has `files`, list it there. ## 3. Check it ```sh npx alaskan-labs check ``` It validates the manifest with the same rules the server uses (the CLI carries the server's own copy of them), checks that the skill file is there and in `files`, and lists anything to fix. ## 4. Sign in ```sh npx alaskan-labs login ``` Paste your creator token when it asks (or run `login --token `, or pipe it in). It's checked with the server, then saved in `$XDG_CONFIG_HOME/alaskan-labs/token` (usually `~/.config/alaskan-labs/token`), readable by you alone (mode 0600). - `ALASKAN_TOKEN`, when it's set, is used instead of the saved token: handy in CI. - The server is `--api `, else `ALASKAN_API`, else the one `login --api` saved, else `https://alaskan.ai`. - `npx alaskan-labs logout` forgets the saved token. Revoking it is in **Settings → Build**. ## 5. Publish 1. Publish your package to npm yourself, as you always do. 2. Then send it to Alaskan: ```sh npx alaskan-labs publish ``` It reads `package.json` and the skill, and sends the package name, the exact version, `bin`, `author`, the manifest and the skill's text. The server reads that exact version from the npm registry and takes **npm's copy of its `alaskan` field as the manifest of record**. If the one the CLI sent is different, the publish is refused, so what's reviewed is what runs: publish to npm first, from the same `package.json`. The server checks the manifest again, records the version's integrity hash and tarball, and keeps the skill text for the moderator to read. A version that isn't on npm yet is refused, and so is one already published to Alaskan. A bot belongs to the account that first published its package. Publishing is limited to 30 versions a day per account, and 20 from one network. ## 6. Review A bot's **first version always waits for a moderator**. They see its commands with their command lines, its setup, hosts, secrets with their links, pricing and skill, and what changed since your last approved version, and they check that: - the npm version exists and matches the manifest, - the skill and the descriptions say what the commands do, - every command that changes something outside the machine is marked `writes`, - the network list is plausible, - the secrets are labelled with where to get them. They approve it, or reject it with a reason you see. Approved bots are listed in [Built by others](/bots) and in every workspace's **Team → Add a dog**. `npx alaskan-labs status` shows each of your bots and versions with their review state (`in_review`, `approved`, or `rejected` with the reason); **Settings → Build** shows the same. ### New versions Publish a new version the same way. It **goes back to review when it changes the setup, commands, secrets, network list or pricing**, any part of them: a command's title, line, inputs or `writes`, a secret's label or link. Titles count because a company's rules are written in them; setup counts because it runs code on the machine that holds the company's secrets, just as a command does. While a version waits, companies keep running your last approved one. A version that changes only the name, job, tagline, about, the dog's look or the skill goes live without review, as your CLI's own code does with every npm version. ## How your bot runs - **On its own machine, every time.** Each command runs on a machine of its own, never on the company's main computer, so your code never sees the other dogs' files, sign-ins or screens. The machine is made for the run with no snapshots and none of the account's secrets. Your package is installed at the exact approved version (`npm install -g @`), `setup` runs, then the command, then the machine is stopped, whatever happened. - **Only its own secrets.** The company's values for your bot's `secrets` are that machine's environment variables for that run only, never part of a command line. They're stored sealed, entered once, never logged, never returned by the API, and deleted when the bot is removed. Wherever a value shows up in a command line or the output, it's masked. - **Under the company's rules.** The rules are your commands' titles in the dog's lists. A command with `writes: true` is **Ask first** by default: the dog proposes it as a [Decide](/docs/decide) card showing the command line, its inputs and the hosts it will reach, and it runs once it's approved and the 10-second undo has passed. Read-only commands are **Just do**. The company moves them like any [rule](/docs/rules), and **Never** refuses a command, on the record. - **On the record.** Every run is a session step with the command line (secrets masked), the package version, the exit code, how long it took and the output: JSON when your CLI gives it, up to 64 KB (8 KB of its error output when it fails). A write that ran is on the [Ledger](/docs/ledger) with who approved it. - **Limits.** 10 minutes a run, from install to the command's end, and at most 2 runs at once in a workspace; past that, a run is told to try again, and an approved write waits its turn. In the dog's chat, it uses your skill to pick a command and its inputs. The company can also run a command from the dog's Details, or put your commands in its workflows, where a command that writes runs only after a Decide in the same run was approved. ## How companies add it In Alaskan, **Team → Add a dog** has two lists: the team templates' dogs, and **Built by others**. Your bot's card says who made it, what it does, what it can change (its `writes` commands), which hosts it talks to, what it needs (its secrets, with your links) and how it's paid for. **Add** asks for every secret, and your bot joins the team as a dog "by" you. A team has each bot at most once. Its Details show who built it, the package and version, its commands (each with Run), which secrets are set (never their values), Update secrets and Remove. The iPhone app shows it like any other dog on the team. **Remove** deletes the bot's secrets and retires its commands still waiting in Decide (they expire, on the record), and the bot's record stays. Companies always run an approved version. If a version turns out wrong, rejecting it takes companies back to the previous approved one. ## How you earn Today, a bot is one of two kinds: - **`free`**: anyone can add it. - **`own-account`**: the company uses its own account with your service (the secret is its own token), and you charge it directly, on your own plans. Alaskan takes nothing, and your product reaches every Alaskan workspace. Coming: paid subscriptions and usage-based pricing through Alaskan, with Alaskan billing the workspace and paying you. `subscription` and `usage` are reserved in the manifest for it, and refused until then. ## The CLI at a glance | Command | What it does | |---|---| | `npx alaskan-labs init` | Adds an `alaskan` field and a `SKILL.md` to start from (`--force` to replace a field) | | `npx alaskan-labs check` | Validates the manifest and the skill with the server's rules | | `npx alaskan-labs login` | Checks your creator token with the server and saves it | | `npx alaskan-labs publish` | Sends the exact version you published to npm for review | | `npx alaskan-labs status` | Your bots and versions, with their review state | | `npx alaskan-labs logout` | Forgets the saved token | Every field and API call is in the [Alaskan bot reference](/docs/bot-reference). --- # Alaskan bot reference > Every field of an Alaskan bot's manifest (the alaskan field in package.json) with its limits and defaults, what sends a version back to review, each run, the workflow step, and the creator, marketplace and workspace API. Canonical: https://alaskanlabs.com/docs/bot-reference An Alaskan bot is an npm package with a CLI, a `SKILL.md` and a manifest: the `alaskan` field in its `package.json`. How to make one is in [Build an Alaskan bot](/docs/build-an-alaskan-bot). ## The manifest ``` alaskan { name, job, tagline, about, breed?, coat?, skill, setup?: [line], commands: [Command], secrets?: [Secret], network?: [host], pricing?: {model, note?} } Command { id, title, run, inputs?: [Input], writes?, kind? } Input { id, label, default? } Secret { id, label, url } ``` | Field | What it is | Rules and default | |---|---|---| | `name` | The bot's name, as the team page and the marketplace show it. | Required, at most 40 characters. | | `job` | A few words, like the dogs' jobs. | Required, at most 40. | | `tagline` | One line on what it does. | Required, at most 140. | | `about` | A few sentences more. | Required, at most 600. | | `breed` | The dog it appears as: `kleekai`, `husky` or `malamute`. | Default `husky`. | | `coat` | `aurora`, `ember`, `glacier` or `twilight`. | Default `aurora`. Malamutes have one coat, so theirs is ignored. | | `skill` | The path to the skill file inside the package, ending `.md`. | Required. It must be in the published package (in `files`, if the package has `files`). | | `setup` | Command lines run once in each fresh machine after install. | Optional, at most 3; default none. Each starts with the package's own bin and takes no placeholders. | | `commands` | What a dog can run, below. | 1 to 12. | | `secrets` | Environment variables the CLI needs, below. | 0 to 5; default none. | | `network` | The hosts the CLI talks to, shown to the company before it adds the bot: `api.example.com` or `*.example.com`, with no scheme or path. | At most 20; default none. | | `pricing` | How it's paid for, below. | Default `{"model": "free"}`. | - A required value that still starts with `TODO` (what `alaskan-labs init` leaves) is refused. - No other fields. The whole `alaskan` field is at most 16 KB, and the skill at most 32 KB. - **Who made it**: the marketplace's creator name is the package's `author` (its name), else the bot's `name`. - **The slug**: a bot's address is its package name, lower-cased, with anything else as dashes (`@acme/report-kit` → `acme-report-kit`). `npx alaskan-labs check`, or `POST /v1/creators/check`, applies the same rules the server does: the CLI carries the server's own copy of them. ## Commands | Field | What it is | |---|---| | `id` | Lower-case letters, digits and dashes, starting with a letter. Workflows and the API name the command by it. | | `title` | What people see, at most 60 characters: "Conversion report". A company's rules for the bot are written in its commands' titles. | | `run` | A command line that starts with one of the package's own bins, with `{{input}}` placeholders. | | `inputs` | At most 8, each with an `id` (the placeholder's name), a `label`, and an optional `default`. Each must be used in `run`. One without a default has to be given. | | `writes` | `true` for a command that changes something outside the machine. | | `kind` | The [Decide](/docs/decide) kind for its card: `update`, `send`, `book`, `spend`, `publish` or `other`. Default `update`, and only a command that writes has one. | `run` is plain words (letters, digits and `_ . / : = @ % + , -`) and placeholders. Nothing a shell reads as syntax is accepted: no quotes, `$`, `;`, `|`, `&`, `>`, backticks, `~`, `*` and the like. Every input value is passed as one single-quoted argument, never as shell syntax: at most 2,000 characters, on one line. A value that is a whole argument can't start with `-` (it would read as an option), so write `--flag={{input}}` to take one that might. A command that writes is **Ask first** by default: the dog proposes it as a Decide card showing the command line, its inputs and the hosts it will reach, and it runs once it's approved and the 10-second undo has passed. Read-only commands are **Just do**. The company moves them like any of the dog's [rules](/docs/rules): a write moved to Just do is decided by the rule at once (on the Ledger) and runs after the same 10 seconds; a read moved to Ask first waits for a yes; **Never** refuses either, on the record. An answer typed in words, with no option chosen, doesn't run anything. ## Secrets | Field | What it is | |---|---| | `id` | The environment variable's name: `ACME_CONVERT_TOKEN`. Names that would change how the machine, the shell or npm behave (`PATH`, `HOME`, `NODE_OPTIONS`, `LD_PRELOAD`, proxy settings, `NPM_CONFIG_*`, `ALASKAN_*` and the like) are reserved. | | `label` | What the company is asked for: "Acme Convert API token". | | `url` | Where to get it, an `https` link. | The company enters every one when it adds the bot. They're that bot's machine's environment variables for each run, never part of a command line; stored sealed on the server, entered once, never logged, never returned by the API, and deleted when the bot is removed. Wherever a value shows up in a command line or the output, it's masked. ## Pricing `pricing.model` is one of: - `free` (the default): anyone can add it. - `own-account`: the company uses its own account with your service (the secret is its own token), and you charge it directly. Alaskan takes nothing. `pricing.note` is a short line in your words about how it's paid for, at most 200 characters. `subscription` and `usage` are reserved for when Alaskan bills for creators, and refused until then. ## Publishing and review - `npx alaskan-labs publish` sends the package name, the exact version, `bin`, `author`, the manifest and the skill's text. - The server reads that exact version from the npm registry. **npm's copy of the `alaskan` field is the manifest of record**: if the one the CLI sent differs, the publish is refused (409), so what's reviewed is what runs. It records the version's integrity hash and tarball, and keeps the skill text for the moderator. - A version not on npm yet is a 400; a version already published to Alaskan is a 409. A bot belongs to the account that first published its package; anyone else gets a 409. Publishing is limited to 30 versions a day per account and 20 from one network. - A bot's **first version always waits for a moderator**, who approves it or rejects it with a reason the creator sees. - A new version **goes back to review when it changes the setup, commands, secrets, network list or pricing**, any part of them: a command's title, line, inputs or `writes`; a secret's label or link. Until it's approved, companies keep the last approved version. Name, job, tagline, about, breed, coat and the skill change without review. - A moderator checks that the npm version matches the manifest; that the skill and the descriptions say what the commands do; that every command that changes something outside the machine is marked `writes`; that the network list is plausible; and that secrets are labelled with where to get them. Rejecting a version takes companies back to the previous approved one. Companies always run an approved version. ## Each run - A machine of its own, made for the run with no snapshots and none of the account's secrets, never the company's main computer. - `npm install -g @` at the exact approved version, then `setup`, then the command, then the machine is stopped, whatever happened. - Only that bot's secrets, as the machine's environment variables. - What runs is the version on the Decide card while it's still approved, or a newer approved version whose command is word for word the same; otherwise it isn't run, and the decision's trail says why. - 10 minutes at most, from install to the command's end. At most 2 runs at once in a workspace; past that, a run is told to try again (429), and an approved write waits its turn. - A session step with the command line (secrets masked), the package version, the exit code, how long it took and the output: JSON when the CLI gives it, capped at 64 KB (8 KB of its error output when it fails). A write that ran is on the [Ledger](/docs/ledger) with who approved it, and its decision's trail gets `ran` (or `not_run`, with why). ## Removing a bot Remove deletes the bot's secrets and retires its commands still waiting in [Decide](/docs/decide): they expire, on the record. The bot's record stays. ## In a workflow A workflow runs a bot's command with a step of its own: ```json { "type": "bot", "bot": "", "command": "", "input": { "days": "7" } } ``` In a workflow, a command that writes runs only after a `decide` step in the same run was approved. ## The API The same API as the rest of Alaskan (see [API reference](/docs/api)): JSON bodies, and errors as `{error}` with a 4xx status; publish adds `errors: [string]` for a manifest's problems. The CLI sends `Authorization: Bearer ` (tokens start `alc_`). A creator token works only on `/v1/creators/publish` and `/v1/creators/bots`; making and revoking tokens, and moderation, are done signed in on the web. ### For creators - `POST /v1/creators/token {label?}` (signed in on the web with an email account) → `{token, id, label, createdAt}`, the token shown once. Up to 5 per account. - `POST /v1/creators/tokens` → `{tokens: [{id, label, createdAt, lastUsedAt}]}`. - `POST /v1/creators/token/revoke {id}` → `{ok}`. - `POST /v1/creators/check {package: {name, version, bin}, manifest}` → `{ok, errors, manifest?, slug?}`. No token needed. - `POST /v1/creators/publish {package, version, bin, author, manifest, skill}` (creator token) → `{bot: {id, slug, name, package}, version, status: "in_review" | "approved", first?, changed?}`. - `GET /v1/creators/bots` (creator token, or the web) → `{bots: [{id, slug, package, name, live, installs, createdAt, versions: [{version, status, createdAt, reviewedAt, reason, changed, integrity, tarball}]}]}`, newest version first. ### The marketplace - `GET /v1/marketplace/bots` (public, no sign-in) → `{bots: [Bot]}`: the approved bots, at the newest approved version of each, most installed first. - `GET /v1/marketplace/bots/` → `{bot: Bot}`; 404 for one that isn't approved. ``` Bot { slug, name, job, tagline, about, breed, coat, creator: {name}, commands: [{id, title, writes, kind, inputs: [{id, label, default?}]}], secrets: [{id, label, url}], network: [host], pricing: {model, note}, package: {name, version}, installs, updatedAt } ``` ### In a workspace - `POST /v1/workspace/bots/install {slug, secrets: {ID: value}}` → `{dog}`: the bot joins the team, with every secret given. Up to the team's 12 dogs, and each bot once. - `POST /v1/workspace/bots/secrets {dogId, secrets}` → `{dog}`, replacing the ones given. - `POST /v1/workspace/bots/remove {dogId}` → `{ok, removed: {id, name}}`. - `POST /v1/workspace/bots/run {dogId, command, input: {id: value}}` → `{session}` for a read under Just do, or `{decision}` otherwise: pending, decided by a Just-do rule (`auto`, runs after the undo window) or refused by a Never rule (`declined`). 429 when both of the workspace's machines are busy. A bot dog carries `bot: {slug, package, version, creator: {name}, network, writes, commands, secrets: [{id, label, url, set}], pricing, available}`; a run's Session carries `bot: {slug, package, version, command, commandLine, exitCode, durationMs, simulated, output?, json?, outputTruncated?, stderr?, decisionId?}`; a bot command's Decision carries `bot: {slug, package, version, command, title, commandLine, inputs: [{id, label, value}], network, writes}`. ### Moderation - `GET /v1/creators/review` or `POST /v1/creators/queue` → the versions waiting, each with its manifest, skill, what changed and the previous approved version (moderators only). - `POST /v1/creators/review {botId, version, approve, reason}` → `{bot, version, status}`. A reason is needed to reject. --- # Connect your service > Your product, headless. Give an MCP server or an HTTP API a native front end inside a chat, with no app to build. What you need, how to paste it in, the preview, publishing and review. Canonical: https://alaskanlabs.com/docs/connect-your-service More and more software is an API that people reach through agents. Alaskan gives yours a native front end inside a chat, with no app to build. If you have an MCP server, or an HTTP API with an OpenAPI file, it becomes an agent on Alaskan without any code written for us. You keep hosting it. Alaskan reads it, draws native screens for it, and calls it when people use it. ## 1. What you need - An MCP server over Streamable HTTP (SSE works as a fallback), or an OpenAPI 3 file in JSON or YAML. `$ref`s are resolved. - If it needs a key: a bare token, which is sent as `Authorization: Bearer …`, or one header line such as `X-API-Key: …`. ## 2. Paste the address into Alaskan In the Alaskan iPhone app, paste the address to your agent (the first tab), or choose **Connect a Service** from the compose menu in Chats. Put the key after the address, or leave it out: if your service answers 401 or 403, your agent asks for it. Keys stay on the Alaskan server and never appear in listings. ## 3. Check the preview Each tool or endpoint becomes a command, up to 12, and your agent lists what each one asks for. Say "call it …" to rename the bot. Operations that need a nested object as a required input are left out, and the preview names them. | Your service has | People get | |---|---| | Input schemas | Native forms: text fields, date pickers, menus, steppers, sliders and toggles | | A destructive tool (`destructiveHint: true`) or a `DELETE` | A confirmation before it runs | | One text input on a tool like ask, query or search | Free text in the chat goes to it | | Results | Label and value rows, stat tiles, tables, timelines, bar charts, images and link buttons | For exact control, return `{"_alaskan": {"nodes": [...]}}` with nodes from the Alaskan protocol. ## 4. Publish Tap Publish and choose the age rating (4+, 9+, 13+, 16+ or 18+), whether to list it in the directory, and the name people see as its maker. It gets a 4-digit code and a share page. ## 5. Review A listed connected bot always waits for a moderator. Until it's approved, only you can use it. The moderator sees what it does, where its messages go and its age rating, then approves it or rejects it with a reason you'll see on the bot's page. Publishing a fix sends it back for review. An edit to a live bot that needs review is held: you see it straight away, and everyone else keeps the approved version until it's approved. ## Once it's live - Before installing, people see your maker name, your service's host as where messages go, and the age rating. - Every call carries an `X-Alaskan-User` header: an id for that person that only your service sees, so you can tell users apart. It stays the same for them on your bot, and it isn't a name, an email or their Alaskan id. - What your service receives is covered by your own privacy policy. See our [privacy page](https://alaskan.ai/privacy) and [terms](https://alaskan.ai/terms). - People can report your bot. If several people who have used it report it, it's suspended until a moderator looks. ## Bring your users with you After you publish, your agent gives you a button to put on your site, in your docs and in emails. It opens your bot in Alaskan, or the App Store for people who don't have it yet: ![Use it in Alaskan](https://alaskan.ai/badge.svg) ```html Use it in Alaskan ``` Replace 1234 with your bot's code. Your bot's page also shows how many people use it. --- # API reference > The Alaskan for Business API (v1). Signing in with email, linking a browser or an iPhone, workspaces and dogs, Decide and undo, the Ledger and its CSV export, templates and workflows. Canonical: https://alaskanlabs.com/docs/api The web app and the iPhone app use one API. Every call is a `POST` with a JSON body unless it says otherwise. Errors are `{error}` with a 4xx status. ## Who's asking Every `/v1/workspace*` and `/v1/decisions*` call (and `/v1/link/list`, `/revoke`, `/join`, `/v1/auth/me` and `/signout`) is made as a person: - the **iPhone app** sends `X-Alaskan-User`, - a **browser** sends `Authorization: Bearer `, from an email sign-in or from a phone that linked it. Neither, or a revoked, signed-out or unknown token, is a `401`. A person without a workspace gets `404` from everything but `/v1/workspace` and `/v1/workspace/create`. Browsers may call these paths from the web app's own origin (CORS); no cookies are involved. ## Signing in on the web - `POST /v1/auth/email/start {email}` (no auth) → `{ok: true, email, expiresAt}`. Emails a sign-in link and a 6-digit code, valid for 15 minutes, once. At most 5 an hour to one address and 20 an hour from one network (`429`); `400` for something that isn't an email. - `POST /v1/auth/email/verify {token}` or `{email, code}` → `{token, email, isNew}`: a web token. The first sign-in for an address makes its account (`isNew: true`); later ones are the same person, on any browser. `410` for a used or expired link or code, `401` for a wrong code; five wrong codes end that sign-in (`429`). - `POST /v1/auth/me` → `{kind: "email", email}` for an account made with an email, `{kind: "phone"}` for a browser signed in as a phone. - `POST /v1/auth/signout` → `{ok: true}`; that token is a `401` from then on. Links, codes and web tokens are stored only as hashes. ## Linking a browser to a phone - `POST /v1/link/start {label?}` (no auth) → `{code, display, expiresAt, pollToken}`. `code` is 8 characters with no 0, O, 1 or I; `display` is the same as `ABCD-2345`. Valid for 10 minutes, once. `label` names the browser in the phone's list (by default from its User-Agent, "Chrome on Mac"). - `POST /v1/link/confirm {code, name?}` (the phone only) → `{ok: true, label}`. Any case, with or without the dash. `404` for a wrong code, `409` used, `410` expired, `403` from a browser. - `POST /v1/link/poll {pollToken}` → `{status: "waiting" | "linked" | "expired", token?, name?}`. Poll every couple of seconds. The token comes once; a poll after that says `expired`. - `POST /v1/link/list` → `{browsers: [{id, label, createdAt, lastSeenAt}]}`. - `POST /v1/link/revoke {id}` → `{ok: true}`; that browser's token is a `401` from then on. Poll tokens and web tokens are stored only as SHA-256 hashes. ## Bringing an iPhone into a workspace - `POST /v1/link/join` (someone in the workspace, usually from the web) → `{code, display, expiresAt, pollToken}`: the same kind of code, valid 10 minutes, once. The web shows it with a QR code. - The phone types it where it types any browser code and sends the usual `POST /v1/link/confirm {code, name?}`. For a join code, the phone's person joins the workspace as a `member` → `{ok: true, label, joined: {workspace}}`. `409` if the phone already belongs to another workspace (one per person in v1). - `POST /v1/link/join/poll {pollToken}` → `{status: "waiting" | "joined" | "expired", member?: {id, name, role}}`. - On the phone, the join shows in `/v1/link/list` as " on the web"; revoking it takes the phone out of the workspace (an owner is never removed). ## Workspace - `POST /v1/workspace` → `{workspace: Workspace | null}`. - `POST /v1/workspace/create {name, template?, ownerName?, timeZone?}` → `{workspace}`, from a team template (default `starter`) with its dogs, its workflows installed and sample work. `timeZone` is IANA (default UTC). `409` if the person already has a workspace; one per person in v1. - `POST /v1/workspace/dog {id, rules?, name?, routines?: [{id, enabled}]}` → `{dog}`. `rules` replaces all three lists. - `POST /v1/workspace/routine {dogId, id, enabled}` → `{dog}`. - `POST /v1/workspace/hire {template, dogId}` → `{dog}`: adds that team template's dog with its job, rules and routines. Up to 12 dogs; `409` when a dog of that name is on the team. - `POST /v1/workspace/turn {dogId, text}` → `{messages: [Message]}`: what was typed and the dog's reply (with `decisionId` when it proposed something). - `POST /v1/workspace/messages {dogId}` → `{messages: [Message]}`, oldest first, the last 100. - `POST /v1/workspace/sessions {dogId?}` → `{sessions: [Session]}`, newest first. - `POST /v1/workspace/computer` → `{computer: Computer}`; `/computer/start`, `/computer/stop`. ## Decisions and the Ledger - `POST /v1/decisions {status?: "pending" | "all", dogId?}` → `{decisions: [Decision], counts: {pending, today}}`. `pending` (the default) is the queue, oldest first; `all` is newest first. - `POST /v1/decisions/decide {id, option?, typed?}` → `{decision}`. `option` is an option's `key` (1–4). The decision is `declined` when that option's `effect` is `decline`, otherwise `approved`. A typed answer is kept exactly as typed and counts as `approved`. `undoUntil` is 10 seconds on. `409` if it's already decided or expired. - `POST /v1/decisions/undo {id}` → `{decision}`, only before `undoUntil`. A person's answer goes back to `pending`; a rule's becomes `undone`. - `POST /v1/decisions/outcome {id, status: "good" | "bad" | "unknown", note?}` → `{decision}`, on a decided one. - `POST /v1/decisions/events {id}` → `{events: [{id, at, actor: {kind: "person" | "rule" | "dog" | "system", name}, action, detail}]}`: the decision's audit trail, oldest first. Append-only. - `GET /v1/decisions/export.csv` → the Ledger as CSV. See [The Ledger](/docs/ledger#export). ## Templates and workflows - `GET /v1/templates` (no auth) → `{teams: [...], workflows: [...]}`: every team template with its dogs, and every workflow template with its trigger, node count and apps. - `GET /v1/templates/team/`, `GET /v1/templates/workflow/` → the template itself. - `POST /v1/workspace/workflows` → `{workflows: [{id, slug, name, summary, for, dog, dogId, trigger, enabled, installedAt, nodes, apps, lastRun}]}`. - `POST /v1/workspace/workflows/install {slug}` → `{workflow}`. Installing twice keeps the first. - `POST /v1/workspace/workflows/run {id}` → `{session}`, as it stands when the run finishes or waits at a Decide. ## Alaskan bots Bots built by others: the public marketplace (`GET /v1/marketplace/bots`), adding, running and removing a bot in a workspace (`/v1/workspace/bots/*`), and the creator calls (`/v1/creators/*`). They're all in the [Alaskan bot reference](/docs/bot-reference#the-api). ## Shapes ``` Workspace { id, name, plan: "trial" | "business", sample: boolean, template, timeZone, createdAt, you: Member, members: [Member], dogs: [Dog], computer: Computer, dashboard: {views: [View, with each metrics item's value]}, counts: {pending, today} } Member { id, name, role: "owner" | "member", app: "web" | "iphone" } Dog { id, key, name, job, breed: "malamute" | "husky" | "kleekai", coat: "aurora" | "ember" | "glacier" | "twilight", lead: boolean, tagline, persona, status: {working, needsYou, queued}, preview, lastActivityAt, screen, rules: {justDo: [string], ask: [string], never: [string]}, routines: [{id, title, when, nextAt, enabled}], connectors: [string], hoursThisWeek } Session { id, dogId, title, status: "running" | "needs_you" | "queued" | "done", screen, costCents, startedAt, endedAt?, steps: [{at, kind: "look" | "think" | "act" | "result", text}], sample, workflowId?, runId? } Decision { id, dogId, kind: "send" | "update" | "book" | "spend" | "publish" | "other", title, summary, source, items: [{label, field, from?, to, flagged?}], options: [{key: 1–4, label, detail, effect: "approve" | "decline", value?}], reasoning, evidence: [{label, url?}], thread: [{from, at, text}], status: "pending" | "approved" | "declined" | "auto" | "undone" | "expired", chosen?, typed?, decidedBy?: {kind: "person" | "rule", name}, decidedAt?, undoUntil?, expiresAt?, outcome?: {status: "pending" | "good" | "bad" | "unknown", note, checkAt?, checkedAt?}, createdAt, sample, workflowId?, runId? } Computer { provider, state: "demo" | "off" | "starting" | "on", screens: [{n, dogId, title, activity}], costPerHourCents, hoursThisWeek, note?, error? } Message { id, role: "user" | "dog", dogId, text, at, decisionId?, sample? } ``` `value` on an option is a workflow template's own key for it, when that isn't its number. A member's `app` is where they came in: an email account on the web, or the iPhone app. `decidedBy.name` is a person's name, or the rule with its kind (`Just do: Refunds up to $50`). `screens[].activity` is the dog's running session's latest step. ## Limits A workspace's people may send its dogs 400 messages a UTC day (fair use); past that, the dogs say so until midnight UTC. --- # For AI agents > How agents can read alaskanlabs.com. llms.txt and llms-full.txt, a Markdown twin of every page, the templates and Alaskans as JSON, and the crawler policy. Canonical: https://alaskanlabs.com/docs/for-ai-agents This site is written to be read by agents as well as people. Everything on it is static, so a plain HTTP GET is all you need. ## Start here - [`/llms.txt`](/llms.txt): a map of the site in the [llms.txt](https://llmstxt.org) format, with a line on every page and a link to its Markdown. - [`/llms-full.txt`](/llms-full.txt): the docs, the Alaskans and the templates in one Markdown file. ## Every page as Markdown Add `.md` to the address of any docs page, post or marketplace page: | Page | Markdown | |---|---| | [/docs/decide](/docs/decide) | [/docs/decide.md](/docs/decide.md) | | [/alaskans/research-brief](/alaskans/research-brief) | [/alaskans/research-brief.md](/alaskans/research-brief.md) | | [/workflows/invoice-chase](/workflows/invoice-chase) | [/workflows/invoice-chase.md](/workflows/invoice-chase.md) | | [/bots](/bots) | [/bots.md](/bots.md) | | [/blog](/blog) | [/blog.md](/blog.md) | | [/](/) | [/index.md](/index.md) | Each HTML page links its twin with ``, and each twin names its canonical page on its first lines and in a `Link: rel="canonical"` header. ## Data as JSON - [`/alaskans.json`](/alaskans.json): every Alaskan's listing (code, name, tagline, what it does, when it runs, its add link). - `/teams/.json` and `/workflows/.json`: each template whole, MIT-licensed, ready to install or fork. For example [/teams/starter.json](/teams/starter.json). These send `Access-Control-Allow-Origin: *`. ## Structured data Every page carries JSON-LD: the organisation and site, `SoftwareApplication` for Alaskan, each Alaskan and each Alaskan bot, `ItemList` for the marketplace, `SoftwareSourceCode` for templates, `TechArticle` for docs, `BlogPosting` for posts, and `BreadcrumbList` everywhere below the home page. ## Crawling [`/robots.txt`](/robots.txt) allows every crawler, AI crawlers included, and lists the [sitemap](/sitemap.xml). Please cite pages by their canonical address on alaskanlabs.com. ## Adding an Alaskan for someone If a person asks you to add an Alaskan, give them its link, `https://alaskan.ai/b/`, which opens the iPhone app with the code ready, or its 4-digit code to send to their own Alaskan. Codes are in [/alaskans.json](/alaskans.json). --- # Alaskan Labs blog > News and notes from Alaskan Labs. Canonical: https://alaskanlabs.com/blog - [Introducing Alaskan for Business](https://alaskanlabs.com/blog/introducing-alaskan-for-business.md) (4 November 2026): A team of AI dogs for a company, in the browser and on iPhone. They do the work under rules you set, ask only about what you choose, and keep everything on the record. - [Every decision on the record: the Decision Ledger](https://alaskanlabs.com/blog/the-decision-ledger.md) (4 November 2026): Why every decision an Alaskan team makes, or asks you to make, goes into a ledger with who decided, why, and how it turned out, and what that lets you do. --- # Introducing Alaskan for Business > A team of AI dogs for a company, in the browser and on iPhone. They do the work under rules you set, ask only about what you choose, and keep everything on the record. Canonical: https://alaskanlabs.com/blog/introducing-alaskan-for-business 4 November 2026 · Alaskan Labs Alaskan started as an iPhone messenger where the chats are AI agents: you talk to your own Alaskan, and each job you give it is an Alaskan too, added with a 4-digit code. Today we're opening the next part, **Alaskan for Business**: a whole team of them for a company. ## A sled team A company gets a team the way a sled gets one. A lead dog, the chief of staff, runs it. Specialist dogs work the inbox, outbound, recruiting, finance, support and the website. In the [Starter team](/teams/starter) they're Sitka, an Alaskan Malamute, leading Juneau, Kodiak, Nome, Denali, Kenai and Yukon. Each dog has a job, its own rules, its routines, the apps it may use, and its own screen on the company's computer. You sign up in the browser at [alaskan.ai](https://alaskan.ai) with your work email and talk to them like coworkers there. The iPhone app is an option: it joins your workspace with a code. ## They do the work The point is that the dogs do the jobs, not that they hand you more to read. Each dog has three lists of rules, written as sentences: **Just do**, **Ask first** and **Never**. "Refunds up to $50" just happens. "Refunds over $50" asks. "Promise a feature date" never happens. The team templates start careful, asking about things like spending money, messages that leave the company and anything that can't be undone, and you move things to Just do as you come to trust them. [How rules work](/docs/rules). So the app is quiet. **Today** answers one question: does anything need me? It counts what does, and lists what got done, one sentence per dog. **Start** opens them in **Decide**, one card at a time: the question, the facts, up to four numbered options. Press 1, 2, 3 or 4, or R to answer in your own words. Every choice has a 10-second undo. ## On the record Every decision goes into the **Ledger**: which dog proposed what, the options, what was chosen and by whom (you, or which rule), the dog's reasoning and evidence, and later, how it turned out. It exports as CSV whenever you like. [Every decision on the record](/blog/the-decision-ledger) is about why. ## Open where it counts A team is set up from a **team template**: its dogs, their rules and routines, the dashboard, the workflows it runs, and sample work so it looks alive on day one. A **workflow template** is a trigger and a graph of steps with at least one Decide in it: chase overdue invoices, triage the morning inbox, draft an intro for every new lead. Both are plain JSON under the MIT licence. Copy them, change them, share them, sell them. [Team templates](/teams), [workflow templates](/workflows), and [the format](/docs/templates). ## What works today We'd rather say it plainly. Version 1 signs you up on the web with your email (no password), brings your iPhone in with a code, creates a workspace from a template with its team and sample work, lets you chat with each dog, runs Decide on the web and the phone with undo, keeps the Ledger with outcomes and CSV export, and runs workflows by hand, through their Decide steps. Next: dogs operating the company computer's browser on their own, carrying out what you approve in a chat, routines and schedules that fire on their own, inviting people by email, and each dog's own email and phone number. [Sign up](https://alaskan.ai/signup), or start with the [docs](/docs/getting-started). --- # Every decision on the record: the Decision Ledger > Why every decision an Alaskan team makes, or asks you to make, goes into a ledger with who decided, why, and how it turned out, and what that lets you do. Canonical: https://alaskanlabs.com/blog/the-decision-ledger 4 November 2026 · Alaskan Labs When you hand work to people, you can ask them later why they did something. When you hand it to AI agents, you usually can't. The work happens somewhere you don't see, and what's left is the result. Alaskan for Business keeps the rest. Every decision a dog makes, or asks you to make, goes into the **Ledger**. ## One row per decision A row says: - **when**, and **which dog**, - **what it proposed**, and the options it gave, - **what was chosen**: an option, or your own words if you typed an answer, - **who chose**: you, by name, or the rule that decided it, in the rule's own words ("Just do: Refunds up to $50"), - **why**: the dog's reasoning, and the evidence it looked at, - **how it turned out**: good, bad, unknown, or still being checked, with a note. That last column is the one we care about most. A decision isn't finished when it's made. "She replied the same day and booked a call" is a good outcome. "No replies after five days" is a bad one. Over a few weeks the Ledger shows which kinds of decisions go well, and that's what tells you a rule can move from **Ask first** to **Just do**. ## Rules, on the record too Not every row is a decision you made. Each dog has rules: **Just do** (happens at once, with a 10-second undo), **Ask first** (comes to Decide) and **Never** (refused). When a rule decides, the Ledger names it. When a Never rule refuses something, that's recorded too. So when you're asked "who said the team could do that?", the answer is a line in the Ledger: a person, or a sentence you wrote. ## An audit trail that can't be rewritten Behind each row is its history: proposed, decided, undone, outcome, expired. Each event says who did it, a person, a rule, a dog or the system. The trail is append-only: the database itself refuses to change or delete it. People are named by their member id within the workspace, never by their Alaskan ID. ## Yours to take The Ledger exports as CSV whenever you like, every row, with the reasoning and outcomes. It's your record of your company's decisions, not ours. [The Ledger in the docs](/docs/ledger) has every column. [Decide](/docs/decide) is where the decisions come from. ---