The fynn platform

Ten pillars. Ten leading indicators.

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).

Pillar · Pairings

1:1s that actually happen.

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 →
Calendar + Zoom aware When both teammates link Google Calendar or Outlook, fynn finds a mutual free window and drops a Zoom link into the DM.
Timezone-staggered sends Each person's intro DM lands inside their own preferred send-hour window — no 2 AM pings. Cron decisions run on the workspace clock; deliveries on each user's local clock.
No-repeat + avoid list Per-program no-repeat window. Private don't pair me with @person list via Slack DM, admin-free.
AI lift visible Every round shows its met-rate vs the rolling 8-round baseline — you see whether the AI is earning its cost.
Pillar · Watercoolers

Channels that stay alive.

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.

Try watercooler free →
Seeded first reply Bot drops a warm first reply 60s after posting. Others find it easier to chime in.
Stays in the thread @-mention fynn in any thread for a brand-voice reply. Autonomous follow-ups when threads get going — opt out with one toggle.
Daily channel digest Every watched channel is summarised once a day and fed to the suggestion agent — so questions feel current.
Approval queue with "inspired by" Permalinks to the source messages visible on every proposal. No black-box AI picks.
Pillar · Channels

fynn learns from where your team already talks.

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.

Read the safety rails →
// user DMs the bot
show my profile

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.

Pillar · Check-ins

Know how your team is actually doing.

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 →
📄 Team fynn · Week of Apr 14 Canvas · #wg-internal

Four ships, two blockers, one big experiment.

Apr 14–18, 2026 · 14 teammates replied

What shipped

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.

What's blocked

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.

What's next

Q3 planning doc. Two folks prototyping an HRIS sync. Interest in an in-person team retro — seems real.

Supporting system · Engagement dashboard

Decisions, not dashboards.

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 →
Sample — your numbers
Pairing meet rate
41%
Of pairs that confirmed "met"
AI lift
▲ 13 pts
This round vs 8-round baseline
Watercooler reply rate
28%
Unique repliers per round
AI accept rate
67%
Of proposed questions approved
Pillar · Celebrations

Birthdays and anniversaries that actually move people.

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.

Try celebrations free →
🎉 fynn APP #team-updates

🎂 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 ↓

🎂 14 ❤️ 11 🎵 custom song
Pillar · Meetups

City-channel meetups that actually happen — without the calendar-invite shame loop.

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 →
Cadence per location Off / Weekly / Bi-weekly / Monthly / Quarterly + DOW + tenant-local hour. Off by default — admins opt in per hub.
1-year freshness floor The picker never reuses an activity within a year. When your queue depletes the admin page shows a 🪫 banner so you see it before the channel goes quiet.
fynn participates in planning Proactive thread chimes (max 2 per post, 12h cooldown) help the conversation converge — never a tag, never a verbatim quote.
Skip-if-engaged Scheduled follow-ups back off the moment the thread is alive — fynn nudges quiet channels, doesn't nag busy ones.
Pillar · Surveys & Polls

Point-in-time deep dives. Recurring pulses. Follow-ups that read like a colleague.

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.

Try surveys free →
Six typed questions Single / multi-choice, rating scale, NPS, free text, yes/no. Each type has its own aggregation — NPS gets a score, rating gets a mean, free text gets themes.
Recurring pulses + per-user onboarding triggers Weekly / monthly / monthly-by-weekday cadence picker (the same Google-Calendar-style builder Pairings + Check-ins use), OR a per-user "N days after each recipient's hire date" mode so onboarding day-7 / day-30 surveys land on each new hire's own timeline, not a fixed calendar date.
17-pack best-practice library EX baseline (Onboarding, Manager Effectiveness, D&I, Mental Health, …) plus the cultural-transformation cluster (AI-Native Culture, Psychological Safety, Feedback Culture, Innovation, Values in Action, Decision-Making Cadence). Auto-loads into your workspace on first use; one-click deploy substitutes your company name into every question.
"Other" with elaboration + conditional follow-ups Choice options can flag a sibling "tell us more" text box that only persists when the option is picked. Any question can gate on a prior answer via show only if — insights filter conditional answers whose gate didn't match, so non-qualifying respondents don't inflate the "didn't answer" bucket.
Channel-aware AI drafts Prompts are grounded in the last 14 days of SourceChannelDigest — so questions reflect what your team actually talked about, not a generic template.
Empathy-first follow-ups 1, 2, or 3 in-thread nudges scaled to your open→close window. Each AI-written, brand-voiced, lead with empathy — never "you haven't responded yet". Bumps the IM via a per-slot emoji react.
Themes + sentiment on close Free-text answers cluster into 3–5 themes with short verbatim quotes; per-answer sentiment (0.5 confidence floor) so low-conviction rows drop.
Anonymity enforced in code Reflection-asserted no-relation test locks the invitation→response boundary. Anonymous channel polls add a hashed-slack-id vote-once gate. A future PR that silently weakens either breaks CI.
Pillar · Timeoff

Slack-native leave. Approvals where work already happens.

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 hierarchy from HRIS Zoho People syncs manager_email nightly. Manual overrides are protected by a manager_locked flag — the next sync won't clobber them. Departments work the same way.
Wallchart, Burnout Board, dashboard widgets Read-only operator views: who's off today, who hasn't taken five days in 180, pending-approvals stoplight, leave-type breakdown, monthly volume, department absence rate, YTD utilisation.
Anniversary leave-year support Per-user leave_year_start_month overrides the tenant default — handles teams whose leave year resets on hire-anniversary, not Jan 1.
Burnout-recharge nudges Monthly DM to anyone with no booked leave in 90+ days. Hard-gated by timeoff_disabled opt-out (DM pause timeoff nudges to silence). Approval DMs always send — opt-out gates nudges, never the workflow.
Pillar · Shout-outs

Peer recognition without the leaderboard.

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 →
Slack ↔ web bidirectional Reactions and thread replies on the Slack message mirror onto the web wall card. Comments posted from the wall echo back into the Slack thread under the giver's name. Loop-back guarded.
Values you define Tag up to 3 tenant-defined values per shout-out. Admin sees a values-balance chart over time — surfacing "we recognise mastery 5× more than kindness" as a culture signal, not a problem.
Specificity coach, not ghost-writer SBI scoring tells the giver where the praise is vague. AI Assist offers a more specific rewrite of their draft. The giver picks. The giver ships.
Quiet-members watch (not a queue) /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.
Pillar · Support Desk

An empathetic concierge for the team.

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 →
Knowledgebase-bounded AI Answers MUST derive only from the admin-curated pages. The bounded SupportKbAnswerAgent returns a sentinel marker when the pages don't support a confident answer — no guessing, no hallucinated URLs, no "policy" the team never wrote.
Confidential tickets, separate path Tickets flagged confidential at creation never post to the public support channel — they DM only the configured HR confidant. Every view / edit writes to an audit log. Bait, harassment, mental-health asks stay private by default.
24h deflection follow-up When the KB answered, fynn checks back the next day: "did this actually resolve it, or is there more I can dig into?" 👎 reopens the ticket pre-filled with the original inquiry. We learn what the KB still gets wrong.
Email + Slack + web, one inbox IMAP polling of people@yourdomain.com creates tickets from email (external senders get a stub user, login disabled). Slack mentions, message shortcuts, global shortcuts, the App Home button, and /me/support all route through the same inquiry-first wizard. Kanban inbox in /admin/desk.
"Tell me what could have been better" CSAT prompt on resolve includes a secondary comment button. Low ratings can trigger an automation rule (e.g. add HR head as a follower). The concierge thanks the requester genuinely on submit and commits to using the feedback to elevate the next time.
PII redacted before any AI call SSNs, credit-card patterns, bank accounts, and DOB patterns are scrubbed from message bodies before they hit any agent. The original is retained in the DB; only the model sees the redacted version.
Safety & consent

The opt-outs are real gates.

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.

Seven hard opt-outs

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.)

Self-service via DM

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.

Never quotes you back

Every AI agent is explicitly forbidden from quoting past replies verbatim — paraphrase only. Your replies are never used to train external models.

Forbidden topics

Hard-barred in every agent's instructions: health, family, finances, religion, politics, performance reviews, sex/gender, stereotypes, trending crises.

Rate limits, not spam

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.

AI spend audited

Every LLM call writes a row to ai_traces — agent name, model, tokens, cost, latency. One-row-per-call auditability, not aggregated.

Works with what you have

Integrates where it belongs.

SlackNative app. Socket Mode for real-time events. OAuth scoped to the bare minimum — chat, im, reactions, users, channels, groups.
Your LLM providerPluggable. fynn ships with two adapters; flip AI_DEFAULT_PROVIDER to swap. Every call is audited.
Zoho People (HRIS)Tenant-level OAuth. Pulls birthdays, work anniversaries, titles daily — so Celebrations always reflects HR reality. BambooHR / Workday / Rippling are pluggable drop-ins.
LeapsomeDirect API token. Anniversary celebrations also land as public praise on the team's Leapsome feed — amplifying the moment, not duplicating it.
Google CalendarPer-user OAuth. fynn finds mutual-free 30-minute windows via the freeBusy API for pairing intros.
Microsoft OutlookPer-user OAuth. Uses Microsoft Graph getSchedule the same way, for Outlook-native teams.
ZoomPer-user OAuth. fynn auto-provisions a Zoom meeting and drops the link into the pairing intro DM.
SunoPlatform-level — included in Team pricing. AI-generated custom birthday songs for Celebrations posts, written from the same channel context as the message.
StripeLaravel Cashier under the hood. Per-seat pricing; prorated as your workspace grows or shrinks.

Ready to try it?

30-day free trial. Unlimited users. No credit card. Install from Slack, turn on the pillars you want.

Start free trial
fynn vs Donut

How we compare, honestly.

Donut is a solid product. Here's where fynn is different — and where we're not.

Capability
fynn
Donut
1:1 intro pairings
✓ AI-scored by shared tags + activity balance
✓ Random shuffle
Watercooler questions
✓ Channel-aware AI, admin-approved with source permalinks
✓ Preset library
Team check-ins / check-ins
✓ Per-question DM threads, personalized greetings
Closed feedback loop
✓ 3-day post-meet DM feeds future matches
Calendar & Zoom
✓ Google / Outlook free-busy + Zoom auto-link
✓ Google / Outlook / Zoom
Per-program engagement insights
✓ Met-rate, AI lift vs rolling baseline, AI brief + starter per pair
Limited reporting
Self-serve opt-outs via Slack DM
✓ pause / snooze / don't-pair-me-with / delete-my-profile
✓ pause
Birthdays / anniversaries
✓ AI-written from channel context; HRIS-sourced dates; opt-outable
✓ Template
HRIS sync
✓ Zoho People today; direct OAuth; pluggable (Bamboo / Workday next)
Starting price
$2.50 / person / month
≈ $3.90 / person / month

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.