Skip to main content

Dynamic content

Filter by idea status

Filter by product

24 Ideas

uehg9iowjeflwnhefNew

 <div style="font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; max-width: 700px; margin: 0 auto; color: #0f172a; padding: 8px;"> <!-- HERO --> <div style="background: #0a0f1e; border-radius: 16px; padding: 50px 36px 44px; margin-bottom: 32px; text-align: center;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 4px; color: #475569; text-transform: uppercase; margin: 0 0 22px 0;">Gainsight Hackathon 2025 — Pitch Submission</p> <div style="background: rgba(99,102,241,0.12); border: 1px solid rgba(99,102,241,0.3); border-radius: 10px; padding: 11px 22px; display: inline-block; margin-bottom: 26px;"> <span style="font-family: Consolas, 'Courier New', monospace; color: #a5b4fc; font-size: 18px; font-weight: 600; letter-spacing: 1.5px;">$ run support brief</span> </div> <h1 style="color: #f1f5f9; font-size: 32px; font-weight: 800; margin: 0 0 8px 0; line-height: 1.25;">You already know everything<br>about this customer.</h1> <h1 style="color: #64748b; font-size: 32px; font-weight: 800; margin: 0 0 20px 0; line-height: 1.25;">It just takes 20 minutes to find it.</h1> <p style="color: #94a3b8; font-size: 15px; line-height: 1.7; margin: 0 auto; max-width: 480px;">One command. Zendesk, Confluence, Slack, Gainsight Community, Sentry, and the web — synthesized into a brief before you say hello.</p> <div style="margin-top: 24px; display: flex; gap: 8px; justify-content: center; flex-wrap: wrap;"> <span style="display: inline-block; background: rgba(99,102,241,0.18); color: #a5b4fc; padding: 4px 13px; border-radius: 20px; font-size: 11px; font-weight: 700; border: 1px solid rgba(165,180,252,0.2);">Internal-facing tool</span> <span style="display: inline-block; background: rgba(16,185,129,0.15); color: #6ee7b7; padding: 4px 13px; border-radius: 20px; font-size: 11px; font-weight: 700; border: 1px solid rgba(110,231,183,0.2);">GRR + NRR impact</span> <span style="display: inline-block; background: rgba(251,191,36,0.12); color: #fde68a; padding: 4px 13px; border-radius: 20px; font-size: 11px; font-weight: 700; border: 1px solid rgba(253,230,138,0.2);">Claude Code + MCP</span> </div> </div> <!-- THE PROBLEM --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">The problem</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">Every ticket starts with a scavenger hunt.</h2> <div style="background: #fff5f5; border-left: 4px solid #ef4444; padding: 20px 24px; border-radius: 0 12px 12px 0; margin-bottom: 18px;"> <p style="color: #374151; font-size: 14px; line-height: 1.75; margin: 0 0 12px 0;">A ticket lands. You open Zendesk — pull the account history. Open Confluence — hunt for relevant KB. Check Slack — scroll through three channels. Google the company. Check Sentry for recent errors. Find the community post they referenced last month.</p> <p style="color: #dc2626; font-weight: 700; font-size: 15px; margin: 0;">That’s 15–20 minutes. Before you’ve typed a single word.</p> </div> <p style="color: #475569; font-size: 14px; line-height: 1.75; margin: 0;">The information exists. It’s in Zendesk, Confluence, Slack, Sentry, the community — scattered, unconnected, waiting for someone to manually stitch it together. Every ticket. Every call. Every single day. That’s the tooling gap this tool closes.</p> </div> <!-- THE TOOL --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">The fix</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">Three words. Same result. Every time.</h2> <div style="background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 12px; padding: 24px;"> <div style="margin-bottom: 10px;"> <code style="background: #0f172a; color: #86efac; padding: 9px 18px; border-radius: 8px; font-size: 14px; font-weight: 600; font-family: Consolas, monospace; display: inline-block;">run support brief Acme Corp</code> </div> <div style="margin-bottom: 16px;"> <code style="background: #0f172a; color: #86efac; padding: 9px 18px; border-radius: 8px; font-size: 14px; font-weight: 600; font-family: Consolas, monospace; display: inline-block;">run support brief 98452</code> </div> <p style="color: #166534; font-size: 14px; line-height: 1.65; margin: 0;">Pass an org name before a call. Pass a ticket ID before you start typing — Claude extracts the org automatically. One trigger. Both workflows. Read-only. No approval needed.</p> </div> </div> <!-- FLOW DIAGRAM SVG --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">How it works</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">One input. Six parallel reads. One brief.</h2> <div style="background: #f8fafc; border: 1px solid #e2e8f0; border-radius: 12px; padding: 28px 20px; overflow-x: auto;"> <svg viewBox="0 0 660 200" xmlns="http://www.w3.org/2000/svg" style="width: 100%; min-width: 500px; height: auto; display: block;"> <defs> <marker id="arr" markerWidth="8" markerHeight="8" refX="6" refY="3" orient="auto"> <path d="M0,0 L0,6 L8,3 z" fill="#cbd5e1"/> </marker> </defs> <!-- Input box --> <rect x="10" y="78" width="110" height="44" rx="8" fill="#1e293b" stroke="#334155" stroke-width="1"/> <text x="65" y="96" text-anchor="middle" fill="#86efac" font-family="Consolas,monospace" font-size="10" font-weight="600">run support</text> <text x="65" y="110" text-anchor="middle" fill="#86efac" font-family="Consolas,monospace" font-size="10" font-weight="600">brief [input]</text> <!-- Arrow right --> <line x1="122" y1="100" x2="160" y2="100" stroke="#cbd5e1" stroke-width="1.5" marker-end="url(#arr)"/> <!-- Claude Code box --> <rect x="162" y="72" width="110" height="56" rx="8" fill="#312e81" stroke="#4338ca" stroke-width="1"/> <text x="217" y="96" text-anchor="middle" fill="#e0e7ff" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="700">Claude Code</text> <text x="217" y="112" text-anchor="middle" fill="#a5b4fc" font-family="'Segoe UI',sans-serif" font-size="9">MCP + Web Search</text> <!-- 6 arrows fanning out --> <line x1="274" y1="82" x2="340" y2="22" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="274" y1="88" x2="340" y2="50" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="274" y1="96" x2="340" y2="76" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="274" y1="104" x2="340" y2="102" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="274" y1="112" x2="340" y2="130" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="274" y1="118" x2="340" y2="158" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <!-- Source pills --> <rect x="342" y="8" width="82" height="26" rx="6" fill="#fff7ed" stroke="#fed7aa" stroke-width="1"/> <text x="383" y="25" text-anchor="middle" fill="#9a3412" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Zendesk</text> <rect x="342" y="38" width="82" height="26" rx="6" fill="#eff6ff" stroke="#bfdbfe" stroke-width="1"/> <text x="383" y="55" text-anchor="middle" fill="#1e3a8a" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Confluence</text> <rect x="342" y="64" width="82" height="26" rx="6" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1"/> <text x="383" y="81" text-anchor="middle" fill="#14532d" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Slack</text> <rect x="342" y="90" width="82" height="26" rx="6" fill="#faf5ff" stroke="#e9d5ff" stroke-width="1"/> <text x="383" y="107" text-anchor="middle" fill="#581c87" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Community</text> <rect x="342" y="117" width="82" height="26" rx="6" fill="#fff1f2" stroke="#fecdd3" stroke-width="1"/> <text x="383" y="134" text-anchor="middle" fill="#881337" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Sentry</text> <rect x="342" y="144" width="82" height="26" rx="6" fill="#f0f9ff" stroke="#bae6fd" stroke-width="1"/> <text x="383" y="161" text-anchor="middle" fill="#0c4a6e" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Web Search</text> <!-- Converge arrows --> <line x1="426" y1="22" x2="488" y2="88" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="426" y1="50" x2="488" y2="92" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="426" y1="76" x2="488" y2="96" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="426" y1="103" x2="488" y2="100" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="426" y1="130" x2="488" y2="104" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <line x1="426" y1="157" x2="488" y2="112" stroke="#cbd5e1" stroke-width="1" marker-end="url(#arr)"/> <!-- Brief output box --> <rect x="490" y="72" width="110" height="56" rx="8" fill="#052e16" stroke="#166534" stroke-width="1.5"/> <text x="545" y="96" text-anchor="middle" fill="#86efac" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="700">Support Brief</text> <text x="545" y="112" text-anchor="middle" fill="#4ade80" font-family="'Segoe UI',sans-serif" font-size="9">~25 seconds</text> <!-- Time label --> <text x="65" y="150" text-anchor="middle" fill="#ef4444" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">Before: ~20 min</text> <text x="545" y="150" text-anchor="middle" fill="#22c55e" font-family="'Segoe UI',sans-serif" font-size="10" font-weight="600">After: ~25 sec</text> </svg> </div> </div> <!-- TERMINAL OUTPUT --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">Sample output</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">What drops in ~25 seconds.</h2> <div style="background: #0d1117; border-radius: 12px; padding: 22px 24px;"> <div style="display: flex; align-items: center; gap: 6px; margin-bottom: 18px; border-bottom: 1px solid #1e293b; padding-bottom: 12px;"> <div style="width: 11px; height: 11px; border-radius: 50%; background: #ef4444;"></div> <div style="width: 11px; height: 11px; border-radius: 50%; background: #f59e0b;"></div> <div style="width: 11px; height: 11px; border-radius: 50%; background: #22c55e;"></div> <span style="font-family: Consolas, monospace; font-size: 11px; color: #374151; margin-left: 8px;">Claude Code — support brief output</span> </div> <div style="font-family: Consolas, 'Courier New', monospace; font-size: 12px; line-height: 2.1; color: #94a3b8;"> <div style="color: #334155; margin-bottom: 6px; font-size: 11px;"># Support Brief — Acme Corp — June 10, 2025 — 09:00 AM</div> <div><span style="color: #60a5fa; font-weight: 700;">→ Customer      </span> SaaS, 300 seats, Skilljar Enterprise since 2022, Chicago HQ</div> <div><span style="color: #60a5fa; font-weight: 700;">→ Open tickets </span> 2 open — 1 critical (SSO/OIDC, unresolved 3 days), 1 waiting</div> <div><span style="color: #f97316; font-weight: 700;">→ Pattern       </span> 4 SSO issues in 90 days — auth is a recurring pain point</div> <div><span style="color: #ef4444; font-weight: 700;">→ Sentry       </span> 3 OIDC token validation failures last 7 days — all prod</div> <div><span style="color: #a78bfa; font-weight: 700;">→ Community   </span> API rate limit post 2 weeks ago — 6 upvotes, no resolution</div> <div><span style="color: #60a5fa; font-weight: 700;">→ Slack        </span> Flagged at-risk in #support-escalations on May 28</div> <div><span style="color: #60a5fa; font-weight: 700;">→ Web intel   </span> Series B raised March 2025 — scaling fast, eng team hiring</div> <div style="margin-top: 8px; padding-top: 8px; border-top: 1px solid #1e293b;"> <span style="color: #fbbf24; font-weight: 700;">→ Watch-out   </span><span style="color: #fef3c7;">SSO pattern + at-risk flag + growth = active retention risk. Handle carefully.</span> </div> </div> </div> </div> <!-- BEFORE vs AFTER --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">The shift</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">What actually changes.</h2> <div style="display: grid; grid-template-columns: 1fr 1fr; gap: 12px;"> <div style="background: #fff5f5; border: 1px solid #fecaca; border-radius: 12px; padding: 20px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 2px; color: #dc2626; text-transform: uppercase; margin: 0 0 14px 0;">Before</p> <div style="font-size: 13px; color: #374151; line-height: 1.8;"> <div style="margin-bottom: 6px;">✕  Open Zendesk, scan tickets manually</div> <div style="margin-bottom: 6px;">✕  Search Confluence, guess keywords</div> <div style="margin-bottom: 6px;">✕  Scroll Slack, hope something surfaces</div> <div style="margin-bottom: 6px;">✕  Check Sentry in another tab</div> <div style="margin-bottom: 6px;">✕  Search the community separately</div> <div style="margin-bottom: 12px;">✕  Google the company for context</div> <div style="color: #dc2626; font-weight: 700; font-size: 15px;">~15–20 minutes per ticket or call</div> </div> </div> <div style="background: #f0fdf4; border: 1px solid #bbf7d0; border-radius: 12px; padding: 20px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 2px; color: #16a34a; text-transform: uppercase; margin: 0 0 14px 0;">After</p> <div style="font-size: 13px; color: #374151; line-height: 1.8;"> <div style="margin-bottom: 6px;">✓  All Zendesk history, auto-surfaced</div> <div style="margin-bottom: 6px;">✓  Relevant KB pulled automatically</div> <div style="margin-bottom: 6px;">✓  Slack mentions found and summarised</div> <div style="margin-bottom: 6px;">✓  Sentry errors scanned in parallel</div> <div style="margin-bottom: 6px;">✓  Community posts surfaced instantly</div> <div style="margin-bottom: 12px;">✓  Company intel from the web included</div> <div style="color: #16a34a; font-weight: 700; font-size: 15px;">~25 seconds. Same depth. Every time.</div> </div> </div> </div> </div> <!-- BUSINESS CASE --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">Business case</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">Why this is a GRR and NRR story.</h2> <div style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-bottom: 18px;"> <div style="background: #faf5ff; border: 1px solid #e9d5ff; border-radius: 10px; padding: 20px; text-align: center;"> <div style="font-size: 28px; font-weight: 900; color: #7c3aed; line-height: 1; margin-bottom: 8px;">~20 min</div> <div style="font-size: 12px; color: #6b7280; line-height: 1.5;">saved per engagement — before a single word is typed</div> </div> <div style="background: #faf5ff; border: 1px solid #e9d5ff; border-radius: 10px; padding: 20px; text-align: center;"> <div style="font-size: 28px; font-weight: 900; color: #7c3aed; line-height: 1; margin-bottom: 8px;">5–10x</div> <div style="font-size: 12px; color: #6b7280; line-height: 1.5;">daily across the full support team — compounds fast</div> </div> <div style="background: #faf5ff; border: 1px solid #e9d5ff; border-radius: 10px; padding: 20px; text-align: center;"> <div style="font-size: 28px; font-weight: 900; color: #7c3aed; line-height: 1; margin-bottom: 8px;">↑ GRR</div> <div style="font-size: 12px; color: #6b7280; line-height: 1.5;">faster resolution → less churn → retained revenue</div> </div> </div> <p style="color: #475569; font-size: 14px; line-height: 1.75; margin: 0;">Faster context = faster resolution. Faster resolution = higher satisfaction. Higher satisfaction = lower churn. And a rep who walks into a call knowing a customer’s SSO issue is 3 days old, their Sentry errors are spiking, and they were flagged at-risk last week — that rep retains the account. That’s the GRR and NRR story.</p> </div> <!-- SEVEN FIELD SPEC --> <div style="margin-bottom: 32px;"> <p style="font-size: 11px; font-weight: 700; letter-spacing: 3px; color: #94a3b8; text-transform: uppercase; margin: 0 0 10px 0;">The spec</p> <h2 style="font-size: 22px; font-weight: 800; color: #0f172a; margin: 0 0 18px 0;">Fully defined. Fully reproducible.</h2> <div style="border: 1px solid #e2e8f0; border-radius: 12px; overflow: hidden;"> <div style="background: #0f172a; padding: 12px 20px; display: flex; align-items: center; gap: 10px;"> <div style="display: flex; gap: 5px;"> <div style="width: 10px; height: 10px; border-radius: 50%; background: #ef4444;"></div> <div style="width: 10px; height: 10px; border-radius: 50%; background: #f59e0b;"></div> <div style="width: 10px; height: 10px; border-radius: 50%; background: #22c55e;"></div> </div> <span style="font-family: Consolas, monospace; color: #86efac; font-size: 12px; font-weight: 600;">run-support-brief.md — v1.0</span> </div> <table style="width: 100%; border-collapse: collapse; font-size: 13px;"> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; width: 95px; vertical-align: top; white-space: nowrap; background: #fafafa;">Trigger</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top;"><code style="background: #f1f5f9; color: #0f172a; padding: 2px 8px; border-radius: 4px; font-size: 12px;">run support brief [org-name or ticket-id]</code></td> </tr> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Inputs</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top;">Org name or Zendesk ticket ID. Claude extracts the org from the ticket automatically — one input covers both entry points.</td> </tr> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Sources</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top; line-height: 1.75;">Zendesk (all org tickets) · Confluence (SKJCS, SKJENG, SKJPROD, CC spaces) · Slack (last 30 days) · Gainsight Community (all posts by org) · Sentry (last 7 days, org domain) · Web search (company profile, news, tech stack)</td> </tr> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Logic</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top; line-height: 1.85;">1. Resolve org from input → 2. Pull all Zendesk tickets, identify recurring themes → 3. Query Sentry for errors tied to org domain → 4. Search Slack for org mentions → 5. Fetch Community posts by org → 6. Find matching Confluence KB articles → 7. Web search company intel → 8. Synthesise into structured brief with watch-outs</td> </tr> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Output</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top; line-height: 1.75;">Structured brief: Customer profile · Open tickets · Ticket patterns · Sentry errors · Community activity · Slack mentions · Web intel · Key watch-outs — 300–500 words, markdown</td> </tr> <tr style="border-bottom: 1px solid #f1f5f9;"> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Side effects</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top;">None — read-only across all sources. Nothing is written or modified.</td> </tr> <tr> <td style="padding: 13px 20px; font-weight: 700; color: #0f172a; vertical-align: top; white-space: nowrap; background: #fafafa;">Approval</td> <td style="padding: 13px 20px; color: #475569; vertical-align: top;">None required — zero writes, zero external sends.</td> </tr> </table> </div> </div> <!-- AGENTIC FUTURE --> <div style="margin-bottom: 32px;"> <div style="background: #1e1b4b; border: 1px solid #3730a3; border-radius: 12px; padding: 24px 26px;"> <p style="color: #a5b4fc; font-size: 11px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; margin: 0 0 10px 0;">The agentic future</p> <p style="color: #e0e7ff; font-size: 15px; line-height: 1.7; margin: 0;">Wire this to a Zendesk webhook and it fires automatically the moment a ticket is assigned — brief already in the thread before you open it. Same tool. No new build. That’s how a named tool becomes an agentic skill. That’s the compound value the rubric rewards.</p> </div> </div> <!-- CTA --> <div style="background: #4338ca; border-radius: 16px; padding: 38px 32px; text-align: center;"> <h2 style="font-size: 26px; font-weight: 900; color: #ffffff; margin: 0 0 10px 0; letter-spacing: -0.3px;">Looking for 1–4 teammates.</h2> <p style="color: rgba(255,255,255,0.82); font-size: 15px; line-height: 1.7; max-width: 440px; margin: 0 auto 10px;">Pitch deadline June 18 · Build sprint June 23–July 2 · Watch Party July 7</p> <p style="color: rgba(255,255,255,0.65); font-size: 13px; line-height: 1.6; max-width: 420px; margin: 0 auto 24px;">If you’re in Support, CS, or PS and want to build something the team uses every day — not a demo, not a polished slide, an actual tool that runs on Monday morning — drop a reply. Let’s talk.</p> <div style="display: inline-block; background: #ffffff; color: #4338ca; padding: 11px 28px; border-radius: 9px; font-weight: 800; font-size: 14px;">Drop a reply below 👇</div> </div></div>

 Automating Spam Detection in Gainsight Community with Slack via Zapier New

Overview :This article explains how to integrate the Gainsight Community with Slack using Zapier to automatically detect and notify your team about potential spam activity.  The automation identifies situations where a user posts multiple times within a short period (for example, more than 5 posts in 10 minutes) and immediately sends an alert to Slack. This enables your team to review and take action quickly, maintaining a clean and engaging community environment.  Prerequisites : Before you begin, ensure you have the following:  A Zapier account  Access to the Gainsight Community API with valid credentials  A Slack workspace with permission to post messages to a channel   Creating the Automation : Step 1: Create a New Zap  Log in to your Zapier account.  Click Create Zap and enter a descriptive name, such as Community Spam Alert to Slack.  Select Code by Zapier to create a custom workflow.  Choose Python as the scripting language to handle API calls and data processing.   Step 2: Configure the Trigger  Set the Trigger Event to Run Python.        Connect to the Gainsight Community API to fetch recent posts.  In the Python script:        Authenticate using your client credentials to obtain an access token.  Retrieve recent posts from the community, including the following content types:  Questions  Conversations  Ideas  For each post, collect details such as:  User ID  Username  Content Type (Question, Conversation, or Idea)  Post Title or Link  Post Creation Time  Published At (for ideas and discussions)  Asked At (for questions)  Group posts by user and calculate the number of posts created in the last 10 minutes.  Identify users exceeding the defined threshold (e.g., more than 5 posts).  For each user that exceeds this limit, include a field in the Python output such as:    spam = true    This will indicate that the user’s activity is flagged as potential spam and should trigger the next step in Zapier.  Return the flagged user details as the Python output.   Step 3: Add a Filter  Add a Filter by Zapier step.              Configure the filter condition to continue only if spam=true.  Since the Python script adds the spam = true field for users who exceed the post threshold, this filter ensures that only flagged spam activity moves to the next step in the workflow. This prevents unnecessary Slack notifications and makes the automation more efficient.  Step 4: Configure Slack Notification  Select Slack as the action app.  Choose Send Channel Message as the action event.  Connect your Slack workspace.        Select or create a dedicated channel (e.g., #community-alerts) for spam notifications.  Customize the Slack message to include:        🚨 Spam Alert!  User: @Ravi  User ID: 12345  Posts in last 10 minutes:   Please review immediately.    Test the Zap to confirm that messages are sent successfully.   Step 5: Spam Prevention (Moderation)  If a moderator marks a post as Not Spam, the user can continue posting as usual. The automation continues to monitor future activity in real time to detect any new spam. However, when Spam Prevention is enabled, once a moderator marks a post as Not Spam, the system lifts the posting restriction for that user.  During this brief period (approximately one minute), the user can create multiple posts again — which means there is a chance for new spam content to appear before the monitoring logic detects and flags it again. This behavior is expected and ensures that legitimate users are not blocked unnecessarily, while still maintaining continuous spam detection afterward.  Benefits  Instant spam alerts delivered directly in Slack  Reduced moderation time and faster team response  Improved community quality and user trust  Continuous real-time monitoring for proactive spam control   Conclusion By integrating the Gainsight Community with Slack through Zapier, you can automate spam detection, receive instant alerts, and act quickly to maintain a healthy and active community. This simple yet powerful automation ensures that your community remains safe, engaging, and well-moderated at all times.