Annual engagement surveys tell you who's unhappy six months after they've already decided to leave. fynn replaces the six-month lag with weekly signals you can act on — Check-ins (real sentiment, not survey theater), Pairings (1:1s that actually happen, not random shuffles), Watercoolers (belonging in the channels where culture lives), Channels (AI oversight on the rooms that carry your team's pulse), Celebrations (HRIS-sourced birthdays and anniversaries), Surveys & Polls (point-in-time deep dives with real anonymity and AI theme clustering), Meetups (in-person gatherings out of city channels), 1:1 Meetings (calendar-aware cadence, carry-forward talking points, action items), Timeoff (Slack-native leave with manager approvals in DM and balances fynn owns end-to-end), Shout-outs (peer recognition that's specific, in your voice, on a permanent wall — no leaderboards), Feedback (peer-to-peer invitation-first interactions separated from compensation, with rigorous privacy), and the Support Desk (an empathetic concierge — inquiry-first KB deflection, a multi-page wizard, mandatory tone-only polish on every admin reply, confidential ticket routing, IMAP ingestion, and workflow templates that compose the other pillars as Lego blocks).
Create a pairing program per channel or audience — Engineering mixer, all-hands, designers, whatever. Each program has its own recurrence, group size (pairs or triads), no-repeat window, and audience scope. Recurrence is Google-Calendar-style: weekly with N-week intervals, monthly on a specific date, monthly on a positional weekday ("first Monday of the month", "last Friday every other month"). Schedules evaluate in your workspace timezone — not UTC.
When a round runs, fynn scores every legal partner for each person by shared topic tags (55%), complementary activity levels (25%), and freshness of engagement (20%). It writes a "why this pair" brief and a conversation starter tailored to both profiles. The intro DM has three buttons: We met, Still finding time, Skip this round — a tap swaps the buttons for a status footer in under a second, and fynn's brand-voice acknowledgement lands as a threaded reply. Three days after the meeting, fynn asks a one-tap "how'd it go?" — winning starters feed the next round's AI prompt.
Try pairings free →Each watercooler is bound to a Slack channel — General, Project, Guild, or Random — and the AI matches the tone. A project-thread gets energising questions about craft; a random channel gets playful; a guild channel gets thoughtful. The bot posts, then drops its own first reply 60 seconds later to break the ice.
AI proposes fresh questions from what the channel was actually talking about that week — every suggestion shows permalinks to the messages that inspired it, so admins approve in context. Humor guidelines are hard-coded: no sex, stereotypes, politics, mental health, health, family, finances, performance, or trending crises. When in doubt, kindness wins.
Once a thread gets going, fynn stays engaged — a teammate can @fynn the bot for a brand-voice reply, and an autonomous follow-up drops in after 2+ unique repliers if conversation has momentum (admin-controlled, can be silenced workspace-wide). Threads that stay alive are the whole point.
Add the channels worth listening to — your guild, your project rooms, your random. fynn builds a compressed daily digest per channel (SourceChannelDigest) that never quotes anyone verbatim. That digest is what makes the rest of fynn feel on-brand: watercooler topic suggestions that match the week's vibe, engagement profiles that know what each person cares about, follow-ups that sound like a colleague — not a template.
Admin approves every suggestion before it posts. Every user can DM show my profile or delete my profile — consent is a hard gate, not a checkbox. Rate limits cap follow-ups at 1 DM / person / 7 days. Never-discuss topics are enforced at both the prompt and the service layer.
Here's what I have:
"Short read: Often writes about travel and photography. Tends to answer longer than average; engages with prompts about craft."
Tags I picked up: travel, photography, film, cooking.
Reply 'delete my profile' anytime to wipe this.
Create a check-in with a title and a short context paragraph that says what the round is for. fynn suggests questions grounded in that context — you approve, edit, or write your own. The whole exchange happens in one DM thread per teammate: opener, questions, follow-ups, and a wrap-up — so it reads as a conversation, not three system messages.
fynn plans the question order per recipient using their engagement profile and last round's reply, opens with continuity instead of a cold start, and asks curiosity-first follow-ups that anchor on a noun the teammate actually used. The next question only fires after the user replies — no 90-minute stopwatches. When the round closes, a Canvas digest publishes to the channel you chose, weaving cross-run patterns the team should see.
See a check-in →Apr 14–18, 2026 · 14 teammates replied
New onboarding flow went live Tuesday. Three client-facing dashboards rolled out across APAC. Timezone-aware scheduler is production-tested on a 150-person workspace.
Stripe migration waiting on legal review (early next week). Infra ticket on the queue worker still open — owner on leave, backup picks it up tomorrow.
Q3 planning doc. Two folks prototyping an HRIS sync. Interest in an in-person team retro — seems real.
One page answers the questions a People Care lead actually asks — one per pillar: Are Check-in replies landing? Are Pairings turning into meetings? Are Watercoolers getting responses? Is Oversight feeding good suggestions?
Each metric is colored green/yellow/red against a healthy baseline — not a vanity number. The dormant-users widget lists people with zero signals in 60 days; a one-click "send a thoughtful nudge" action writes a DM that references their own known interests, not a template.
See a live dashboard →
fynn's bar is explicit: a birthday post should make the recipient feel genuinely seen — not "happy birthday to an amazing teammate 🎂". Each celebration pulls from the last three weeks of Channels context, references specific things the person shipped or said, and posts into the public channel you pick (e.g. #team-updates).
Dates come straight from your HRIS via a direct OAuth integration — Zoho People today, with BambooHR / Workday / Rippling as drop-in additions. No CSVs to maintain, no list that drifts out of sync with HR reality. fynn pulls read-only; nothing is written back.
Optional add-ons: Suno generates a custom birthday song from the same context; Leapsome receives the anniversary recognition on the person's public praise feed. Without either integration, the core AI message still ships.
Anyone can DM fynn celebrations off to skip public birthday/anniversary posts for themselves — no admin dependency, no explanation required.
🎂 Happy birthday, Ankur — the person who held the Stripe migration together last week and still found a moment to drop a tasting-menu recommendation in #random.
Hoping your year ahead has a few more of those weekends in Goa you keep hinting at, and a deploy or two that feels like a win on a Friday afternoon.
What's a moment Ankur made your work better? Reply below ↓
Most city-channel groups go quiet between gatherings because nobody wants to be the one who suggests the next one. fynn turns each #loc-* channel into a self-driving meetup loop — pre-approved activity ideas, a cadenced nudge, and a thread that fynn participates in rather than just posts to.
You pick a cadence per location — Weekly, Bi-weekly, Monthly, or Quarterly + day-of-week + tenant-local hour. On the chosen minute, fynn posts the headline: "Let's get the Bangalore crew together IRL" with two activities pulled from your admin-approved queue (least-recently-picked rotation, never repeats within a year) and the explicit framing "pick one, tweak it, or do your own thing — the point is that y'all actually meet". Budget tiers are inline. 👋 / 💡 reactions are seeded.
Then the planning starts — and fynn doesn't disappear. When teammates start replying, fynn reads a paraphrased thread snapshot (no quoting, no names) and chimes in occasionally with one useful nudge: "sounds like Friday lunch is the lean — anyone close want to scout a spot?" Capped at two chimes per post with a 12-hour cooldown, so fynn helps the conversation along without becoming the loudest voice in the room. If the thread stays quiet, scheduled follow-ups at T+2d and T+5d gently re-engage; if it's already busy, those nudges skip themselves automatically.
Try meetups free →The multi-question variant is a Slack modal: one DM invite with a "Take survey" button opens all questions at once, submit once, done. Question types cover the real ones — single / multi-choice, rating scale, NPS, free text, yes/no. The single-question variant is a Poll that posts inline to a channel for a quick pulse.
Run them as one-shots, as recurring templates (weekly pulse, fortnightly retro, monthly engagement read — each cycle spawns a fresh instance with its own responses + analytics + close-out post; the parent template's "Past runs" surface shows the trend without polluting the list), or as per-user start-date triggers that fire N days after each recipient's hire anniversary (onboarding day-7 / day-30 check-ins land on each new hire's individual timeline, not a fixed calendar date).
A 17-pack best-practice library ships with every workspace and auto-loads on first use. The EX baseline covers Onboarding, Offboarding, Manager Effectiveness, Engagement, Comp & Benefits, D&I, Mental Health, L&D, Teamwork, Remote Work, Autonomy & Enablement, Change Management, and Hyper Growth. The cultural-transformation cluster is for teams shifting how they work — AI-Native Culture, Psychological Safety, Feedback Culture, Innovation & Experimentation, Values in Action, Decision-Making Cadence — plus short quick-pulse picks (Weekly Pulse, Recharge Check, Employee NPS). The picker auto-substitutes your workspace name in every question; admins clone-then-edit, the canonical pack stays clean. Manage the full library at Surveys & Polls → Packs.
Choice questions support an "Other" with tell-us-more elaboration that captures free-text only when a qualifying option is picked. Any question can carry a show only if rule — gating it on a prior single-choice or yes/no answer — that filters insights and CSV exports to the qualifying respondent set. Re-clicking Suggest with AI or Draft invite with AI always produces materially different output; fynn carries a 24h per-field avoid-list so admins iterating on copy never get the same line twice.
fynn drafts the questions from recent team activity (channel-aware — the thing Polly and Viva fynn don't do), drafts the invite copy, clusters free-text answers into themes on close, and scores sentiment per free-text response. Every draft goes through admin approval — nothing ships without a human nod.
Dynamic-cadence in-thread nudges handle the hard part — getting late respondents back. Cadence scales with open→close window: 1 nudge for a 3-day flash poll, 2 for a 10-day pulse, 3 for a 3-week deep dive. Each lands in the original DM thread (not a fresh cold ping) and progresses one slot per cron tick, so a late-joining user always sees the empathy beat first ("totally fair if your week's been packed — your honest take really shapes what we change next") before the impact and last-shot variants. AI-written copy, brand-voiced; a per-slot emoji react on the parent DM bumps the IM to the top of the recipient's channel list when the thread is collapsed. Anonymous channel polls are vote-once — fynn hashes tenant : survey : slack_user_id with a 24h TTL so a single voter can't stuff the count, and the raw Slack id is never persisted anywhere.
Anonymous mode is a three-layer contract, not a checkbox: nullable user_id on the response, ±30s jitter on submitted timestamps, and a reflection-asserted test that prevents anyone from ever joining SurveyInvitation to SurveyResponse in code. The anonymous-loser path on a double-submit returns an unsaved stub — never another respondent's row — and free-text samples render in randomized order so even created_at can't leak submit sequence. CSV export omits respondent columns entirely — not blanked, removed — so "anonymous" holds up when your DPO reads the schema.
SourceChannelDigest — so questions reflect what your team actually talked about, not a generic template.
Most leave tools want your team to leave Slack to book leave. fynn keeps the entire flow inside the room they already live in — /timeoff book opens a modal with leave type, dates, half-day toggles, and a live "you'll use X working days, Y remaining" preview. /timeoff balance, /timeoff cancel, and /timeoff who today work the same way. DM verbs (book leave, my balance, who's off today) cover users who'd rather type than slash.
Approvals are Slack DM only. The manager (resolved from your HRIS, falling back to admins when no manager is set) gets a DM with the request, the dates, the running balance, and Approve / Decline buttons. A decline opens a modal for a reason. The original DM updates in place after the decision — no admin-panel approval queue, no one chasing a tab.
fynn owns allowances. Admin sets per-leave-type defaults plus per-user-per-year overrides; HRIS never writes balances back. Per-country public holidays seed automatically (working-day math respects them). Half-day support is first-class (AM / PM / full). A daily "who's off today" channel digest lands in the channel you choose. Migrating from Timetastic? A one-shot XLSX importer brings 8,000+ historical bookings, allowance history, and approver chain over with idempotent re-runs.
Try timeoff free →manager_email nightly. Manual overrides are protected by a manager_locked flag — the next sync won't clobber them. Departments work the same way.
leave_year_start_month overrides the tenant default — handles teams whose leave year resets on hire-anniversary, not Jan 1.
timeoff_disabled opt-out (DM pause timeoff nudges to silence). Approval DMs always send — opt-out gates nudges, never the workflow.
Recognition cultures die two ways: people stop being specific ("great job!"), or they get gamified into ritual ("you owe a shout-out today"). fynn refuses both. Anyone can type @fynn shoutout @teammate for staying late on the migration — Slack and the web wall both light up, and the recipient gets a quiet DM (off-channel) so they actually see their own praise.
AI coaches the giver, never ghost-writes. A "Polish with AI" button rewrites the giver's own draft to be more behavioural (SBI: Situation–Behaviour–Impact) and more specific — without inventing facts the giver didn't claim. The giver always sees and confirms the final text before publish. No mention is ever published with AI-rewritten content the giver hasn't approved.
What's explicitly not here: no leaderboards, no points, no daily allowances, no streaks, no mandatory weekly nudges, no anonymous shout-outs, no AI suggesting who to recognise. The wall is believably human by design. Recipients who'd rather not have a card on the public wall can mute it post-hoc (Slack message stays — we can't unsend). Givers have a 60-second edit/withdraw window for typos and regret.
Try shout-outs free →/admin/shout-outs surfaces who hasn't been recognised in 90 days — as observation, not action. Pressure-recognising people creates hollow praise; the panel says so out loud.
Most internal help desks make the requester learn a new tool, file a structured ticket, and wait. fynn flips that. Ask in Slack the way you'd ask a colleague: "How do I request parental leave?", "Where's our reimbursement policy?", "My manager is on leave — who do I escalate to?" — and the concierge searches the admin-curated knowledgebase first. About 40–60% of common asks deflect on the spot with a warm, sourced answer. No ticket created, no HR cycle burned.
When the KB can't answer, the same conversation becomes a real ticket with priority, SLA, a single assignee, and a CSAT prompt on resolve. The Slack flow is a two-page wizard (mirroring /me/support on web): inquiry + KB attempt on step 1, category / priority / details / "on behalf of" on step 2. The App Home tab has three filter pills — ⏳ Waiting on Me / ✅ Created by Me / 👀 Followed by Me — and a personalized list per filter.
Every admin reply runs through a mandatory concierge polish layer. Strict tone-only rewrite — preserves every fact, link, number, name, and commitment verbatim. HR types the substance; fynn softens the corporate edge into the warm, specific voice a colleague would use. Admins see a "✨ Polished" badge with the original draft preserved underneath for audit. Tenant kill switch is one toggle.
Workflows compose the existing pillars as Lego blocks — an Onboarding template that fires pairings.create_one_off (buddy) → meeting.schedule_one_on_one (welcome) → checkin.schedule_one_off (4-week) → shoutout.post_celebration (welcome). Three HR seed templates (Verification Letter, Document Request, HR Confidential Concern) ship in v1; pillar-action heroes (Onboarding, Time-off, Offboarding) ship in v1.2. Automations engine is allowlisted JSON DSL — no eval, no arbitrary code paths.
Try the Support Desk free →/me/support all route through the same inquiry-first wizard. Kanban inbox in /admin/desk.
Privacy and consent aren't checkboxes at the bottom of an admin form. They're enforced in code — no AI can override them, no dashboard can bypass them.
Every teammate has seven flags: pairing_opted_out, watercooler_opted_out, dm_follow_ups_opted_out, ai_profile_opted_out, celebration_opted_out, meetup_followup_opted_out, timeoff_disabled. Each is a gate in the service code — nothing sends when the flag is true, regardless of what the AI decided. (Timeoff opt-out gates nudges and digest mentions only; approval DMs always send — the workflow can't be silenced.)
Type pause, resume, snooze 2 weeks, don't pair me with @person, show my profile, delete my profile, celebrations off, pause meetup follow-ups, pause timeoff nudges, book leave, my balance, or integrations as a Slack DM to the bot. No admin dependency.
Every AI agent is explicitly forbidden from quoting past replies verbatim — paraphrase only. Your replies are never used to train external models.
Hard-barred in every agent's instructions: health, family, finances, religion, politics, performance reviews, sex/gender, stereotypes, trending crises.
Max 1 DM follow-up per user per 7 days. Max 1 thread follow-up per user per watercooler round. Post-meeting feedback fires once per pair, on the transition.
Every LLM call writes a row to ai_traces — agent name, model, tokens, cost, latency. One-row-per-call auditability, not aggregated.
AI_DEFAULT_PROVIDER to swap. Every call is audited.getSchedule the same way, for Outlook-native teams.30-day free trial. Unlimited users. No credit card. Install from Slack, turn on the pillars you want.
Start free trialDonut is a solid product. Here's where fynn is different — and where we're not.
Comparison reflects fynn features that are live in the codebase today. Donut rows reflect their published documentation at the time of writing. We'll update this as either product changes.