Silky in Slack
Describe a role. Review the pipeline. Send offers. Ask anything about your hiring. All from the channel your team already reads.
Everything Silky can do, in Slack
Silky has one set of hiring actions. The same set whether you invoke them from the dashboard, from a Claude Code session, from the API, or from Slack. You can do everything in Slack that you can do in Silky.
Install
Go to Settings > Integrations in the Silky dashboard and press Install Silky for Slack. Slack walks you through the standard OAuth flow. Pick the workspace, pick the default channel you want activity in, and approve the scopes.
Silky needs: channels:read, chat:write, commands, im:write, users:read, and files:read. That is the minimum needed to post cards, read your roster, run slash commands, and accept CV uploads. We do not request history access.
After OAuth completes you are redirected back to Silky with a confirmation. The default channel starts receiving activity immediately.
channels:read, chat:write, commands, im:write, users:readTalking to Silky
Mention @silky in a channel where it is invited, or send it a direct message (DM). Ask in plain English. Silky reasons over your data, takes the action, and confirms anything destructive or bulk before it happens.
Silky always asks for confirmation before anything destructive or a bulk action. Everything else happens immediately and posts the result in the thread.
How to read the tier badges
Not every action has the same Slack UX yet. Actions marked "Rich Slack flow" have a dedicated Block Kit modal with gap detection and multi-step confirm, at dashboard parity. Actions marked "Conversational" are reachable by asking @silky; you get a one-click confirmation card with fields Silky inferred from your prompt, which is fast for simple payloads but not a replacement for the dashboard modal when the fields really matter. Actions marked "Not in Slack" are dashboard-only today.
Everything you can do in Slack
If it is in the Silky action registry, it works in Slack. Here is the full list, grouped by what you are trying to do. Phrase it however you like. Silky understands plain English.
Jobs and advertising
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Create a new role | “new senior backend engineer in London, remote, around GBP 120k”describe_a_job | Rich |
| Fill in missing details | “set the team to Payments and the hiring manager to Sarah Patel”update_job_draft | Rich |
| Tweak a draft | “make it punchier and bump salary to GBP 140k”revise_job_draft | Rich |
| Skip a detail | “skip the salary for now”skip_job_draft_gap | Rich |
| Create the job | “looks good, create it”confirm_job_draft | Rich |
| Peek at a draft | “show me what the draft looks like so far”get_job_draft | Rich |
| Check creation progress | “how's that job coming along?”get_job_creation_status | Rich |
| Update a role | “change the title on the backend job to staff backend engineer”update_job | Conversational |
| Close a role | “close the senior backend role, we hired internally”close_job | Conversational |
| Reopen a role | “reopen the senior backend engineer role”reopen_job | Conversational |
| Delete a role | “delete the old data engineer draft”delete_job | Conversational |
| Publish a public ad | “publish the careers page ad for the senior backend role”create_job_ad | Conversational |
| Edit the ad | “make the ad shorter and emphasise remote flexibility”update_job_ad | Rich |
| Rewrite the ad with AI | “make the ad more energetic”rewrite_job_ad | Rich |
| Create from scratch (structured) | “create a bare job record titled Head of Sales”create_job | Conversational |
| Polish the social posts | “shorten the LinkedIn post and add a hashtag”update_social_draft | Rich |
Candidates
Drag a CV (PDF or DOCX) into a Silky DM and Silky parses it, pre-fills name / email / phone / LinkedIn, and posts a review card with a Create candidate button. Mandatory fields (name, email) block the button until filled; everything else is optional.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Add a candidate | “create a candidate Bill Jones, email bill@jones.com, Head of Sales at Acme”create_candidate | Rich |
| Create from a CV upload | “drag a PDF or DOCX into the DM”prepare_candidate_from_cv | Rich |
| Peek at a candidate draft | “show me the draft from the CV I just uploaded”get_candidate_draft | Rich |
| Fix a parsed field | “change the email on the draft to alice@example.com”update_candidate_draft | Rich |
| Create the candidate | “looks right, create it”confirm_candidate_draft | Rich |
| Update a candidate | “update Bill Jones, his new phone is +44 7700 900000”update_candidate | Conversational |
| Merge duplicates | “merge the two Bill Jones records into one”merge_candidates | Conversational |
| Remove a candidate | “delete that duplicate Bill Jones record”delete_candidate | Conversational |
Applications and pipeline
Reject and bulk reject open a Slack modal for a structured reason (wrong skills, wrong seniority, wrong location, wrong compensation, moved faster with another candidate, or other), an optional note, and a checkbox to send the templated rejection email. The same reason shape as the dashboard modal. Reviewing a candidate from @silky renders the full scorecard with Reject / Add to talent pool buttons on the card. Logging a phone screen ("just screened Alice, she was great, advance her") opens a 2-click outcome + notes card that atomically writes a timeline note AND moves the stage - advance lands on Shortlisted, reject fires the rejection email, hold / no show leave the stage alone.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Attach a candidate to a job | “attach Sarah Chen to the Senior PM role”create_application | Conversational |
| Move to a new stage | “move Alice Smith to shortlisted”move_stage | Conversational |
| Reject a candidate | “reject Jamie Lee with reason 'moving ahead with a closer fit'”reject_candidate | Rich |
| Record a withdrawal | “mark Alice as withdrawn, she took another offer”withdraw_application | Conversational |
| Reassign owner or source | “assign Alice's application to Sam”update_application | Conversational |
| Add a note | “note on Alice: strong reference from her old manager”add_note | Conversational |
| Log a phone screen | “just screened Alice, she was great, advance her”prepare_phone_screen | Rich |
| Peek at the phone screen draft | “show me the phone screen draft for Alice”get_phone_screen_draft | Rich |
| Update a phone screen draft | “change the phone screen outcome to hold”update_phone_screen_draft | Rich |
| Confirm a phone screen log | “confirm the phone screen log for Alice”confirm_phone_screen_draft | Rich |
Interviews
Scorecards open a rich Slack card with one input per criterion (grouped by Essential / Role-Specific / Company Fit / Communication), an overall recommendation radio, and a feedback textarea. Pre-filling scores in the prompt ("scorecard on Alice: strong hire, 4 out of 5 on system design") lands the card at a confirm-ready state with those values applied. The confirm button dispatches to the existing submit_scorecard + update_interview_outcome handlers so the timeline and interview outcome stay consistent. The Submit scorecard CTA on the 24-hour interview_feedback_nudge card also uses this flow.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Schedule an interview | “schedule an interview with Alice on Monday 2pm”schedule_interview | Rich |
| See free interview times | “find interview times for Alice with me and Sam, 1 hour”propose_interview_slots | Conversational |
| Request an interview (Yes applicants only) | “request an interview with Alice, offer her three times next week”request_interview | Conversational |
| Draft an interview with Silky | “book a video interview with Alice, 30 min, Monday 3pm”prepare_schedule_interview | Rich |
| Read the current interview draft | “show me the Alice interview draft”get_interview_draft | Rich |
| Edit an interview draft | “change the Alice interview to Tuesday at 10am, 45 min”update_interview_draft | Rich |
| Book the drafted interview | “confirm the Alice interview”confirm_interview_draft | Rich |
| Reschedule | “move Alice's interview to Tuesday at 10am”reschedule_interview | Rich |
| Draft a reschedule with Silky | “prepare to move Alice's interview, her manager is away”prepare_reschedule_interview | Rich |
| Cancel | “cancel Alice's Monday interview, the interviewer is sick”cancel_interview | Rich |
| Draft a cancel with Silky | “prepare to cancel Alice's interview, the role paused”prepare_cancel_interview | Rich |
| Read a reschedule / cancel draft | “show me the Alice reschedule draft”get_interview_action_draft | Rich |
| Edit a reschedule / cancel draft | “set the Alice reschedule to Wednesday 3pm”update_interview_action_draft | Rich |
| Confirm a reschedule / cancel | “confirm Alice's reschedule”confirm_interview_action_draft | Rich |
| Record the outcome | “Alice passed her hiring manager interview”update_interview_outcome | Conversational |
| Submit a scorecard (rich flow) | “scorecard on Alice: strong hire, 4 out of 5 on system design, notes: strong on distributed systems”prepare_submit_scorecard | Rich |
| Peek at a scorecard draft | “show me the scorecard draft for Alice”get_scorecard_draft | Rich |
| Fix a score inline | “change the communication score on that draft to 5”update_scorecard_draft | Rich |
| Submit the drafted scorecard | “submit the scorecard for Alice”confirm_scorecard_draft | Rich |
| Submit one-shot scorecard | “submit scorecard for interview ivw_abc123 with recommendation hire, notes "strong SQL"”submit_scorecard | Rich |
| Open the AI interview form | “prepare the interview form for Alice's tech round”prepare_interview_form | Conversational |
| Read an interview form draft | “show me the interview form for Alice's tech round”get_interview_form_draft | Conversational |
| Score an interview section | “score the technical depth section 4 out of 5 with notes "clear ownership signal"”update_interview_form_draft | Conversational |
| Submit the interview form | “submit Alice's interview form with recommendation hire”confirm_interview_form_draft | Conversational |
Forms and references
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Send a screening form | “send Alice the general screening form”send_screening_form | Conversational |
| Send a reference request | “ask Alice's referee Jane Doe for a reference”send_reference_request | Conversational |
| Request references | “ask Alice for 2 referees”request_referee_details | Conversational |
Offers
Draft an offer in Slack and Silky opens a salary + currency + start date + optional expiry card with a letter preview underneath, rendered from your offer letter template. Mandatory fields (salary, currency, start date) block the Confirm button until filled; the confirm dispatches to the same create_offer handler the dashboard uses, so the hires row, stage transition to Offered, activity log, webhooks, and automation triggers are identical regardless of surface.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Draft an offer | “draft an offer for Marcus at GBP 115k starting 1 May”prepare_create_offer | Rich |
| Peek at an offer draft | “show me the offer draft for Marcus”get_offer_draft | Rich |
| Edit an offer draft | “bump the offer to USD 130k and move the start to June 1”update_offer_draft | Rich |
| Create the offer | “looks good, create Marcus's offer”confirm_offer_draft | Rich |
| Create from scratch (structured) | “create a bare offer on Marcus's application, 115000 AUD, start 2026-05-01”create_offer | Rich |
| Mark accepted or declined | “Marcus accepted his offer”update_offer_status | Conversational |
| Rescind | “rescind Marcus's offer, budget was pulled”rescind_offer | Conversational |
| Send for e-signature | “send Marcus's offer for signature”send_offer_for_signature | Conversational |
Email and comms
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Email a candidate | “email Alice to ask about her notice period”send_email | Rich |
| Schedule an email | “schedule a follow-up to Alice for Friday 9am”schedule_email | Rich |
| Cancel a scheduled email | “cancel the Friday follow-up to Alice”cancel_scheduled_email | Rich |
| Draft a candidate email with Silky | “draft a warm reject for Ben, mention our design cafe”prepare_compose_email | Rich |
| Read the current email draft | “show me the draft email for Alice”get_email_draft | Rich |
| Edit an email draft | “change the subject on the Alice draft to "Catch up Friday"”update_email_draft | Rich |
| Rewrite an email draft | “make the Alice draft warmer and a paragraph shorter”revise_email_draft | Rich |
| Send or schedule the drafted email | “send the Alice draft now”confirm_email_draft | Rich |
Talent pools
Reads are conversational too: "who is in the engineering talent pool?" lists the members, "who is waiting to join our talent pools?" lists pending join requests with names so you can approve or decline in the same thread.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Create a talent pool | “set up a talent pool for product design”create_talent_pool | Conversational |
| Add to a talent pool | “add Alice to the product design talent pool, great candidate but wrong role”add_to_talent_pool | Conversational |
| Remove from a talent pool | “take Alice out of the product design pool”remove_from_talent_pool | Conversational |
| Approve a join request | “approve Bill's request to join the product talent pool”approve_join_request | Conversational |
| Decline a join request | “decline Bill's request to join the product talent pool”decline_join_request | Conversational |
People (HR)
Available when your workspace has the People module. Reads are conversational: "who is off next week?" lists approved leave, "what is my annual leave balance?" answers from the live ledger. Balances only - salary never appears in chat.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Request leave | “book annual leave from 2 Oct to 6 Oct”request_leave | Conversational |
| Approve leave | “approve Morgan's leave request”approve_leave | Conversational |
| Decline leave | “decline Morgan's leave request”decline_leave | Conversational |
| Add an employee | “add our co-founder Sam Park to People”create_employee | Conversational |
Bulk actions
Bulk asks open a preview card in Slack before anything commits: one row per candidate (name, current stage, job), a count, and Confirm / Cancel. You can scan the list, cancel if the set looks wrong, or confirm. Bulk reject adds a second step - a structured reason modal (wrong skills, wrong seniority, wrong location, wrong compensation, moved faster with another candidate, or other) with an optional note and a checkbox to send the templated rejection email.
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Reject many at once | “reject everyone below 3 stars on the backend role”bulk_reject | Rich |
| Email many at once | “email all 18 phone-screen candidates about the delayed timeline”bulk_send_email | Rich |
| Add many to a talent pool | “add all the rejected product designers to the design talent pool”bulk_add_to_talent_pool | Rich |
Scheduling and reminders
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Set a reminder | “remind me to follow up on Alice's references on Thursday”create_reminder | Conversational |
| Schedule a call | “book a 30 minute call with Alice tomorrow at 11”schedule_call | Conversational |
| Schedule a meeting | “schedule a hiring sync with Sam and Jo next Monday”schedule_meeting | Conversational |
| Reschedule a meeting | “move Derren's meeting tomorrow to Thursday at 2pm”reschedule_meeting | Conversational |
| Cancel a meeting | “cancel Derren's meeting tomorrow - no longer needed”cancel_meeting | Conversational |
Team, automations, and admin
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Invite a teammate | “invite sam@acme.com as a hiring manager”invite_team_member | Conversational |
| Create an automation | “auto-reject applications with no resume attached”create_automation | Conversational |
| Update an automation | “update the auto-reject rule to skip cafe members”update_automation | Conversational |
| Turn an automation on or off | “disable the auto-reject rule for now”toggle_automation | Conversational |
| Delete an automation | “delete the old auto-move rule”delete_automation | Conversational |
| Create a webhook | “add a webhook to https://acme.com/hooks/silky for interview events”create_webhook | Conversational |
| Delete a webhook | “remove the old Slack webhook”delete_webhook | Conversational |
| Update the brand voice | “update the brand voice to say we write short and direct”update_brand_voice | Conversational |
Views, review queue, and account
| What you ask | Example phrasing | Slack tier |
|---|---|---|
| Save a search as a view | “save this search as 'senior engineers in review'”save_current_view | Conversational |
| Resolve a review queue item | “mark that review item resolved”resolve_review_item | Conversational |
| Show plan upgrade options | “show me the upgrade options”upgrade_plan | Conversational |
Expect the list here to grow. If you are not sure whether something is possible, ask Silky. It will either do it or tell you it cannot.
Slash commands (optional shortcuts)
If you prefer typing /silky reject Alice over asking in natural language, slash commands always work. They sit alongside the natural-language surface as a quick shortcut.
| Command | What it does |
|---|---|
| /silky new job <description> | Describe a role in a sentence or three. Silky drafts the spec and asks you to confirm before publishing. /silky new job Senior backend engineer, Go or Rust, Sydney or remote AU, ship payments infra |
| /silky review <job> | Show the review queue for a job. Candidates with their scores and current stage. /silky review Senior backend engineer |
| /silky schedule <candidate> | Kick off interview scheduling. Silky uses the default interview format for that role. /silky schedule Alice Smith |
| /silky reject <candidate> [reason] | Reject a candidate. If you do not provide a reason, Silky asks for one before it emails them. /silky reject Jamie Lee "moving ahead with a closer fit on infra experience" |
| /silky note <candidate> <text> | Add a timeline note. Shows up on their profile and in the next digest. /silky note Alice Smith strong reference from ex-manager at Canva |
| /silky status [job] | Current digest. Applications, longlisted, interviewed, offered, hired. /silky status |
| /silky share <job> | Post the share-bundle for a role so anyone in the channel can copy the tweet, LinkedIn post, or referral blurb. /silky share Senior backend engineer |
| /silky help | List every command. /silky help |
Event cards
Every event Silky thinks you care about posts as a Block Kit card. Cards link back to the full record in the dashboard, and subsequent events for the same candidate on the same role thread under the first card so the channel stays tidy. Cards carry one-click buttons that open the same rich flows as the dashboard - review a candidate, accept an AI suggestion, rescind an offer, submit a scorecard - so you can act without leaving Slack.
application_received- Candidate
- Alice Smith
- Source
- Careers page
- Quick score
- 8.2 (top band)
talent_pool_join_requestapplication_scored- Role
- Senior backend engineer
- Band
- Top
- Why
- Strong Go background, shipped payments infra at previous role.
interview_scheduled- Role
- Senior backend engineer
- When
- Thu 23 Apr, 10:00 AEST
- Interviewer
- Brett Iredale
- Format
- Technical screen (45 min)
scorecard_submitted- Interviewer
- Brett Iredale
- Score
- 4 / 5
- Recommendation
- Advance to HM interview
reference_red_flag- Referee
- Priya (ex-manager)
- Flag
- Would not rehire. Concerns raised about reliability under deadline pressure.
offer_sent- Role
- Senior backend engineer
- Start date
- 12 May
- Hiring manager
- @brett
weekly_digest- Senior backend engineer
- 28 applied, 6 longlisted, 2 offered
- Designer
- 14 applied, 3 longlisted, 0 offered
- Founding AE
- 9 applied, 2 longlisted, stuck at HM interview
interview_feedback_nudge- Interview
- Technical screen, 24 hours ago
- Interviewer
- Brett Iredale
Conversational threading
When a card is posted for Alice Smith on a role, everything else about Alice on that role threads under it. Scorecards, offer updates, replies, feedback nudges. The channel stays tidy and the context stays tight. If Alice applies to a second role, she gets a fresh thread scoped to that role. Candidate-level events without a specific role share a single candidate thread.
DM preferences
Each user controls what they get DM'd about from their own settings page at /settings/slack. Most recruiters turn on reference red flags, offers signed, and the weekly digest. Interviewers usually only want interview reminders and feedback nudges. Admins can set defaults for the workspace, but users can override on their own account.
Channel overrides
The default channel picks up everything. If you want interviews in #hiring but red flags in #silky-alerts, set a per-event override from Settings > Slack. If you prefer scripting, the same overrides are available via the API.
{
"channel_overrides": {
"interview_scheduled": "C07ABCD1234",
"interview_feedback_nudge": "C07ABCD1234",
"reference_red_flag": "C08XYZ9876",
"application_received": null,
"weekly_digest": "C09DIGEST42"
}
}Keys are Slack notification type names. Values are Slack channel IDs (the ones that start with C). A null value falls back to the default channel. Missing keys also fall back to the default. Every notification type listed on this page is a valid key.
Slack and the dashboard, side by side
Slack and the dashboard share the same action set. Slack is fast for conversational work: ask a question, reject a candidate, draft an offer, all in the flow of your existing channels. The dashboard is built for visual work: stack-rank views, rich candidate timelines, side-by-side comparisons. Use whichever fits the moment. Nothing is Slack-only and nothing is dashboard-only.
First hour checklist
Five things to try.
- Install from Settings > Integrations.
- Pick a default channel.
- Mention @silky in the channel and ask 'how many applicants did we see this month?'
- Ask Silky to draft a new role: @silky new job senior backend engineer Sydney around AUD 180k.
- Open your Slack preferences at /settings/slack and choose which events you want DM'd.