{"en":{"internal-conversation":{"open-chat-new-tab":"Open chat in a new tab","start-again":"Start again","start-again-description":"Start a new chat. Keep this chat and its drafts.","rule-published":"Published. This rule is running.","rule-saved":"Draft saved. These changes are not published.","rule-changed":"This rule changed. Review it before publishing.","artifacts":"Drafts","select-artifact":"Choose a draft","updating-artifact":"Updating draft…","numbered-skill":"Skill {number}","open-chat":"Open chat","link-description":"Copy a link to this conversation.","link-owner-note":"Open this link while signed in to your account.","load-error":"Could not load this conversation.","retry":"Try again","name":"Chloe","navigation":"Internal","open":"Open in Internal","skill-draft":"Skill draft","rule-draft":"Rule draft","open-skill":"Open skill","save-rule":"Save rule draft","open-rule":"Open rule","save-error":"Could not save the draft."},"account":{"back":"Back","description":"Manage your personal profile and workspaces.","passkeys":{"add":"New passkey","add-dialog":{"description":"Name this passkey so you can identify it later.","name-title":"Name your passkey","register-description":"Use your fingerprint, face, or device lock to create a passkey.","title":"Add a passkey"},"count":"{count} passkey | {count} passkeys","created":"Added {date}","default-name":"Passkey","delete":"Delete","delete-confirm":"Delete","delete-confirm-description":"This passkey will no longer be usable for sign-in.","delete-confirm-title":"Delete passkey?","description":"Secure your account with biometric authentication.","device-only":"Saved on one device","empty-description":"Add a passkey to sign in with biometrics.","empty-title":"No passkeys","errors":{"already-registered":"This authenticator is already registered. Please use a different one.","delete-failed":"Failed to delete passkey.","last-passkey-required":"Your workspace requires at least one passkey.","not-supported":"Your browser does not support passkeys. Try Chrome, Safari, or Edge.","registration-failed":"Failed to register passkey. Please try again."},"name-label":"Passkey name","name-placeholder":"e.g. MacBook Touch ID","register":"Register","required":"Required","retry":"Try again","synced":"Synced across your devices","title":"Passkeys","unavailable":"Passkeys couldn't be loaded."},"profile":{"avatar":"Avatar","avatar-error":"Failed to upload avatar","avatar-hint":"Recommended size: 256x256px","description":"Your personal information visible to others.","display-name":"What should Gruvi call you?","display-name-placeholder":"e.g., Alex","email":"Email","email-hint":"Contact support to change your email.","error":"Failed to update profile","name":"Full name","name-placeholder":"Alex Johnson","save":"Save Changes","saving":"Saving...","title":"Profile","upload-avatar":"Upload"},"security":{"active-sessions":"Active sessions","cancel":"Cancel","confirm":"Confirm","current-session":"Current session","description":"Manage your active login sessions.","expires":"Expires {date}","keep-signed-in":"Keep signed in","location-unknown":"Location unknown","no-other-sessions":"No other active sessions.","only-this-device":"You're only signed in on this device.","other-devices":"{count} other device signed in | {count} other devices signed in","retry":"Try again","revoke":"Revoke","revoke-all-confirm-description":"This will sign out all devices except your current session.","revoke-all-confirm-title":"Revoke all other sessions?","revoke-all-error":"Failed to revoke sessions.","revoke-all-others":"Revoke all other sessions","revoke-confirm-description":"This will immediately sign out this device.","revoke-confirm-title":"Revoke session?","revoke-error":"Failed to revoke session.","sign-out":"Sign out","sign-out-all":"Sign out all other devices","sign-out-all-confirm":"Sign out all","sign-out-all-confirm-description":"Every device except this one will be signed out immediately.","sign-out-all-confirm-title":"Sign out all other devices?","sign-out-all-error":"Couldn't sign out the other devices.","sign-out-confirm-description":"{device} will be signed out immediately and will need to sign in again.","sign-out-confirm-title":"Sign out this device?","sign-out-error":"Couldn't sign out that device.","signed-in":"Signed in {date}","this-device":"This device","title":"Sessions","unavailable":"Sessions couldn't be loaded.","unknown-device":"Unknown device"},"title":"Account","workspaces":{"description":"Workspaces you are a member of.","empty":{"create":"Create Workspace","description":"You are not a member of any workspaces yet.","title":"No Workspaces"},"open":"Open","role":"Role","title":"Your Workspaces"}},"agent-pages":{"activity":{"filter-time":"Time range","filter-type":"Type","no-activity":"No activity yet.","time-30d":"Last 30 days","time-7d":"Last 7 days","time-today":"Today","title":"Activity"},"chat":{"delete":"Delete","delete-confirm-description":"Are you sure you want to delete this thread? This action cannot be undone.","delete-confirm-title":"Delete thread","empty-description":"Ask {name} anything about their domain.","empty-title":"Start a conversation","message-placeholder":"Message {name}...","new-chat":"New Chat","older":"Older","pin":"Pin","pinned":"Pinned","previous-30-days":"Previous 30 days","previous-7-days":"Previous 7 days","rename":"Rename","search-threads":"Search threads...","today":"Today","unpin":"Unpin","yesterday":"Yesterday"},"dashboard":{"approval-rate":"Approval rate","average-confidence":"Avg confidence","coming-soon":"Dashboard coming soon for this agent type.","escalations":"Escalations","knowledge-gaps":"Knowledge gaps","recent-activity":"Recent activity","replies-today":"Replies today"},"hub":{"active":"Active","active-agents":"Active agents","add-agent":"Add agent","description":"Overview of all AI agents in your workspace.","disabled":"Disabled","empty-description":"Add an AI agent to start handling customer conversations automatically.","empty-title":"Create your first agent","open":"Open","title":"Agents","total-agents":"Total agents"},"page":{"status-active":"Active","status-disabled":"Disabled","tab-activity":"Activity","tab-chat":"Chat","tab-dashboard":"Dashboard","tab-settings":"Settings"},"settings":{"description":"Description","display-name":"Display name","enabled":"Enabled","enabled-description":"Enable this agent in your workspace.","general":"General","general-description":"Basic agent configuration.","knowledge":"Knowledge Sources","llm-config":"LLM Configuration","llm-config-description":"Configure the language model for this agent.","max-tokens":"Max tokens","model":"Model","temperature":"Temperature"}},"agent-setup":{"agent":"Agent","complete":{"back-to-agents":"Back to Agents","created":"✓ {name} has been created","go-to-settings":"Go to {name}'s settings","message1":"I'm ready to help your customers!","message2":"Hi, I'm {name}. How can I help?","status-active":"Active","status-active-description":"Start handling conversations now.","status-draft":"Draft","status-draft-description":"Save and deploy later.","status-label":"Deployment status"},"create":"Create {name}","error":"Something went wrong. Please try again.","identity":{"avatar":{"background":"Background","extras":"Extras","eyebrows":"Eyebrows","eyes":"Eyes","glasses":"Eyewear","label":"Avatar","mouth":"Mouth","none":"None","randomize":"Randomize"},"headline":"Give your agent an identity","name":"Agent name","name-min-length":"Name must be at least 2 characters","name-placeholder":"Chloe","subtitle":"A name and a face. This is what customers see in the chat widget and what your team sees in the inbox."},"industry":{"analyze":"Analyze","headline":"Let {name} learn about your business","memory":{"add":"Add memory","key-placeholder":"e.g. Company name","subtitle":"These are facts {name} will always remember. Edit, remove, or add to them.","title":"Agent Memory","value-placeholder":"e.g. Acme Auto Group"},"processing":{"analyzing":"Extracting key details...","browsing":"Browsing your pages...","done":"✓ Got it! I know what you do now.","looking":"Looking into {url}..."},"skip":"Skip, I'll set this up later","subtitle":"Analyze your website so the agent understands who you are and what you do.","tone-detected":"Tone detected: {tone}","unknown-business":"Your business","url-label":"Your website","url-placeholder":"https://yourcompany.com"},"knowledge":{"headline":"Teach {name} about your business","processing":{"chunking":"Breaking it into chunks...","done":"✓ Got it! Ready to answer questions.","learning":"Learning the content...","reading":"Reading your document..."},"skip":"Skip, I'll add knowledge later","subtitle":"Upload documents or share links. The agent will learn from these and use them to answer customer questions."},"personality":{"edit":{"empathy":"Warmth","empathy-high":"Warm & empathetic","empathy-low":"Cool & direct","greeting":"Greeting","region":"Regional style","region-french":"French","region-uk":"UK English","region-us":"US English","signoff":"Sign-off","structure":"Content structure","structure-bullets":"Bullets","structure-combo":"Combo","structure-prose":"Prose","title":"Edit personality"},"headline":"Choose {name}'s personality","presets":{"chloe":{"description":"Warm but concise. Works for most support scenarios.","example":"Hi! Of course, returns are easy. Here's what to do:\n• Start a return at our returns portal\n• Select your order and reason\n• Drop it off within 14 days\nLet me know if anything's unclear! 😊","name":"Chloe","summary":"Balanced · Bullets · Friendly"},"claire":{"description":"Measured and precise. Ideal for regulated or premium brands.","example":"Hello. I would be happy to assist you with your return request. Please navigate to our returns portal and follow the instructions provided. Do not hesitate to reach out if you encounter any difficulties.","name":"Claire","summary":"Formal · Prose · Professional"},"clive":{"description":"Casual, human-feeling voice that puts customers at ease.","example":"Hey! No worries at all, just pop over to our returns page and follow the steps. Super quick, I promise! 😄 Give me a shout if you get stuck anywhere.","name":"Clive","summary":"Informal · Warm · Conversational"},"edit":"Edit","example-question":"Customer: \"I want to return something I bought last week\""},"preview":{"agent":"{name}:","customer":"Customer:","label":"Live preview","try-another":"Try another question"},"subtitle":"Pick a preset and fine-tune the details. The live preview updates as you go."},"save-changes":"Save changes","steps":{"identity":"Identity","industry":"Business","knowledge":"Knowledge","personality":"Personality","type":"Agent type","welcome":"Welcome"},"title":"Agent Setup","type":{"conditions":{"tags":"Only trigger for conversations with these tags","tags-placeholder":"e.g. vip, premium...","title":"Specialist conditions","topics":"Topics this agent handles","topics-hint":"Press Enter or comma to add a topic","topics-placeholder":"e.g. returns, billing, delivery..."},"conflict-warning":"You already have {name} set up as a first responder. Adding another will split incoming conversations between them.","first-responder":{"description":"Greets every customer, answers if it can, and hands off to a human when needed. Your front line.","subtitle":"Customer-facing · All queries","title":"First responder"},"headline":"What kind of agent is this?","specialist":{"description":"Only engages on specific topics. Other queries go to humans or another agent.","subtitle":"Customer-facing · Topic-specific","title":"Specialist agent"},"subtitle":"Choose how this agent interacts with your team and customers.","team":{"description":"Doesn't talk directly to customers. Summarises tickets, drafts replies, and helps your agents work faster.","subtitle":"Internal only","title":"AI for your team"}},"welcome":{"cap1":"Reply to customers","cap1-description":"Handles conversations 24/7 so your team can focus on complex cases.","cap2":"Insights & summaries","cap2-description":"Drafts replies, summarises threads, and flags what matters.","cap3":"Smart handoffs","cap3-description":"Knows its limits and passes to a human agent when needed.","cta":"Let's set one up","headline":"Meet your AI support team","skip":"I'll do this later","subtitle":"Chatter agents work alongside your human agents, replying to customers, surfacing insights, and knowing when to hand off.","type-label":"What kind of agent do you need?"}},"agent":{"activity":{"acked":"Acknowledged and started looking into it","badge-ai":"AI","citation":"Cited \"{title}\"","collapse":"Collapse activity","composer-aria":"Team chat, coming soon. This is not yet available.","composer-placeholder":"Type your message here or call an AI command with /","customer-message":"Sent a message","empty":"No agent activity yet","escalation":"Flagged for a human","expand":"Expand activity","explainer":"The feed shows a history of all major actions by humans and AI. You can use it to keep record of what the AI did. In future you can ask AI to take actions from here too.","feed":{"empty":"No skill activity yet.","in-progress":"In progress","needs-attention":"Needs attention","recent":"Recent","rollup-on-plural":"{skill} ran {count} time on {date}, all resolved | {skill} ran {count} times on {date}, all resolved","rollup-today-plural":"{skill} ran {count} time today, all resolved | {skill} ran {count} times today, all resolved"},"human-reply":"Replied to the customer","knowledge":"Searched the knowledge base, {count} article | Searched the knowledge base, {count} articles","maximize":"Fill the panel with the feed","minimize":"Shrink the feed back","more-agents-tooltip":"Fred, Anna and Harry are joining soon","note":"Left an internal note","replied":"Replied to the customer","show-earlier":"Show earlier","soon":"Soon","status":{"assigned":"Assigned this thread","assigned-to":"Assigned this to {target}","assigned-to-team":"Assigned this to {team}","closed":"Closed this thread","reopened":"Reopened this thread","resolved":"Marked this thread as resolved","self-assigned":"Self-assigned this thread","snoozed":"Snoozed this thread","spam-marked":"Marked this thread as spam","spam-restored":"Restored this thread from spam","tracker-linked":"Added this thread to tracker {tracker}","tracker-unlinked":"Removed this thread from tracker {tracker}","participant-added":"Added {target} to this thread","unassigned":"Unassigned this thread","unsnoozed":"Unsnoozed this thread"},"system-actor":"System","title":"Feed","verification-blocked":"Blocked, needs review","verification-flagged":"Flagged for review","what-is-this":"What is the feed?"},"ai-limit":{"description":"Over your limit. Customers still reach you.","title":"Keep your AI replying","trial-description":"Your trial has ended. Customers still reach you.","trial-title":"Turn your AI back on","upgrade":"Upgrade plan"},"insight":{"generating":"Analyzing thread...","next-steps":"Next Steps","title":"What's going on?","type":{"info":"Info","problem":"Problem","suggestion":"Suggestion"},"updating":"Updating..."},"sentiment":{"card-title":"Customer sentiment","collapse":"Collapse","expand":"Expand","explainer":"This is a history of how this customer's experience has been over time. It is a mixture of analysis of message content and the scores from customer surveys. Use it to inform how you serve customers with different histories.","forecast-coach":"Coach","forecast-details":"Show sentiment guidance","forecast-evidence":"What we're seeing","forecast-labels":{"at-risk":"At risk","neutral":"Neutral","positive-history":"Positive history","recovering":"Recovering","wary":"Wary"},"forecast-neutral-reason":"This customer has no strong prior support signal yet, so they might be neutral.","forecast-reason":"Why","forecast-source-thread":"Thread","forecast-suggestion":"Suggested approach","forecast-updating":"Updating...","no-reading":"No reading yet","now":"Now","open-evidence-thread":"Open {thread} in a new tab","switch-to-emoji":"Switch to emoji view","switch-to-weather":"Switch to weather view","title":"Sentiment","weather":{"clear":"Clear","cloudy":"Cloudy","rainy":"Rainy","stormy":"Stormy","sunny":"Sunny"},"what-is-this":"What is this?"},"skill-run":{"action":{"reference":"External reference"},"approval":{"already-reviewed":"Already reviewed by {name}","approve":"Approve","approve-now":"Approve now","arming-approve":"Approving… writes to {provider} when the timer ends","arming-approve-generic":"Approving… the change is made when the timer ends","arming-decline":"Declining… this request closes when the timer ends","cancel":"Cancel","caption":"Waiting for approval · also in Activity","closing-request":"Closing this request.","confirm-decline":"Confirm decline","consent":"The customer agreed","consent-identity":"The customer agreed in chat. Identity verified.","consent-identity-named":"{name} agreed in chat. Identity verified.","consent-named":"{name} agreed","decline":"Decline","decline-hint":"Declining asks why.","decline-now":"Decline now","decline-reason-placeholder":"Add a short reason","declined-by-settled":"{name} declined. Nothing was changed.","declined-head":"Declined","declined-settled":"Declined. Nothing was changed.","declined-sub":"Nothing was changed. {name} will not run this.","evidence-line":"{fact}, found in {provider}","executing-discount":"Applying the code in {provider}","executing-generic":"Making the change in {provider}","executing-issue":"Filing the issue in {provider}","executing-refund":"Sending the refund through {provider}","expired":"This approval expired","expires":"Expires {distance}","failed-settled":"The change did not go through.","kind":{"address":"Address","discount":"Discount","issue":"Issue","refund":"Refund"},"making-change":"Making the change now.","open-thread":"Open thread","proposes":"{name} proposes","receipt":"Done. The change went through.","receipt-head-address":"Address updated","receipt-head-discount":"Discount applied","receipt-head-generic":"Change made","receipt-head-issue":"Issue filed","receipt-head-refund":"Refund sent","receipt-sub":"Now {value}.","receipt-sub-generic":"{name} made the change.","state-declined":"Declined","state-done":"Done","state-expired":"Expired","target-changed":"The action behind this proposal changed after it was parked. It needs to be proposed again.","time-left":"{time} left to review","undo-countdown":"Undo · {seconds}","writes-to":"writes to {provider}"},"escalated-note":"Handed off to the team with the collected details as an internal note.","evidence":{"empty":"{name} has not looked anything up yet.","footer":"via {provider} · {calls} calls · {time}","found-in":"found in {provider} ({mode})","mode-live":"live","mode-sandbox":"sandbox","title":"Evidence"},"evidence-checks":"{count} checks","hide-value":"Hide value","history":{"activation":"{skill} started on this thread","approved":"Approved by {name}","canceled":"canceled","declined":"Declined by {name}","executed":"{action} executed","expired":"expired","failed":"failed","fetch":"Looked up in {source}","fetch-failed":"Lookup in {source} failed","handed-off":"Handed off to the team","proposal-created":"{action} proposed","resolved":"resolved"},"lookup":{"failed":"Lookup failed"},"pill":{"in-progress":"In progress","needs-you":"Needs you","resolved":"Resolved"},"photo-evidence":{"attempt":"attempt {attempt} of {total}","compared-against":"compared against","mismatch":{"no-damage-visible":"No damage visible","no-problem-visible":"Problem not visible","not-a-screen":"Not a screen","unreadable":"Too unclear","wrong-item":"Wrong item","wrong-screen":"Wrong screen"},"re-asked":"Re-asked the customer for another photo","reference-alt":"Reference photo","submitted-alt":"Photo the customer sent","teammate-checking":"A teammate is checking the photo"},"progress":"{collected} of {total} fields collected","proposal":{"approve":"Approve and execute","approved-by":"Approved by {name}","approved-failed":"Approved by {name}, but the action failed","awaiting-admin":"Waiting for an admin to review this exception.","awaiting-review":"Waiting for a teammate to review this proposal.","closed":"Closed","discretionary":"Exception","discretionary-title":"Discretionary exception","executing":"Approved. The action is executing.","expired":"Expired without review","expires":"Review window closes {distance}","fact-basis":"Cited facts","note-placeholder":"Optional review note","reject":"Reject","rejected-by":"Rejected by {name}","review-failed":"The review could not be saved. Try again.","reviewer-fallback":"a teammate","title":"Awaiting approval"},"resolution":{"escalate":"When complete: hand off to the team","propose-action":"When complete: propose an action","reply":"When complete: reply to the customer"},"resolved":{"approved-by":"approved by {name}","canceled":"The run was canceled","expired":"The run expired","failed":"The run failed","handed-off":"Handed off to the team","history":"History","title-generic":"{skill} resolved","view-full-run":"View full run"},"reveal-value":"Reveal value","source":{"chat":"Chat","form":"Form","operator":"Operator"},"station":{"asked":"asked","collect-active":"{name} is collecting details","collect-done":"Details collected","collect-done-sub-plural":"{count} detail collected | {count} details collected","completing":"{name} is completing the action","eligibility":"eligibility","fetch":"Look up the details","fetch-active":"{name} is looking things up","fetch-active-sub":"looking it up in {provider}","fetch-done":"Details found","identity":"identity","identity-done":"Identity verified","identity-done-sub":"matched to the account holder","propose":"Propose the action","propose-active":"{name} proposes","propose-sub":"waiting for a person to approve","resolved":"Resolve the thread"},"status":{"canceled":"Canceled","collecting":"Collecting","executing":"Executing","expired":"Expired","failed":"Failed","fetching":"Fetching","handed-off":"Handed off","queued":"Queued","resolved":"Resolved","retrying":"Retrying","waiting-on-approval":"Waiting on approval","waiting-on-customer":"Waiting on customer"},"subtitle":"Skill run","title":"Skill","verification":{"pending":"Identity not verified yet","verified":"Identity verified"},"view-skill":"view skill"}},"agents":{"analyst":{"coming-soon":{"description":"Anna's analytics dashboard is coming soon.","title":"Anna, Analyst"}},"auto-reply":{"auto-replies-paused":"Auto-replies paused","customer-waiting-reply":"Customer is waiting for a reply","explainer":"{name} will generate replies to gather data or help your customers based on knowledge sources and policies. If the AI does not know what to answer, the thread will be marked for help from a human.","handed-off":"Handed off to you","hint-handed-off":"{name} could not answer this one. Reply yourself, or hand it back to let {name} auto-reply again.","hint-limited":"Auto-replies stop until your plan is upgraded. You can still reply yourself.","hint-paused":"{name} stays quiet until you resume. You can still reply yourself.","hint-paused-waiting":"The customer wrote while {name} was quiet. Resume and {name} answers them right away, or reply yourself.","hint-replying":"Just reply to take over. {name} stops as soon as you send a message.","on":"{name} auto-replies here","on-compact":"Auto-replies here","on-demand":"{name} drafts when you ask","on-demand-compact":"Drafts when you ask","on-demand-explainer":"{name} won't message customers on its own. Ask for a draft or a handoff note, and review it before sending.","open-panel":"Open {name}","pause":"Pause","plan-limit-reached":"Plan limit reached","replying":"{name} is replying","replying-compact":"Replying","resume":"Resume","resume-auto-replies":"Resume auto-replies","resume-reply":"Resume & reply","take-over":"Take over","upgrade":"Upgrade","what-is-this":"What does auto-reply do?"},"available":{"analyst":{"description":"Analyses trends and surfaces insights across your conversations."},"coming-soon":"Coming soon","fixer":{"description":"Resolves common issues automatically based on your knowledge sources."},"monitor":{"description":"Tracks live conversations and detects issues in real time."},"title":"Available"},"commands":{"mute":"Mute","mute-description":"Mute auto-replies on this thread","reply":"Reply","reply-description":"Draft a reply using thread context","rewrite":"Rewrite","rewrite-description":"Rewrite current text clearly and professionally","summarize":"Summarize","summarize-description":"Summarize the conversation","tone":"Tone","tone-description":"Adjust the tone of your text","translate":"Translate","translate-description":"Translate to another language"},"draft":{"banner-note-mode-hint":"Switch to Reply +","dismiss":"Dismiss","drafted-banner":"{agent} drafted a reply","drafted-label":"{agent} drafted a reply","edit":"Edit","escalation":"Escalation trigger: {reason}","loading":"{agent} is drafting...","sources":"Knowledge sources","sources-count":"{count} source | {count} sources"},"dropdown":{"agent-badge":"AI","agent-hint":"AI Agent","footer-hint":"C L for quick access","no-results":"No matching commands"},"errors":{"chatter-unavailable":"The selected AI assistant is not available","slug-taken":"This slug is already in use by another agent"},"fixer":{"coming-soon":{"description":"Fred's automation dashboard is coming soon.","title":"Fred, Fixer"}},"guard":{"write-something-first":"Write something first"},"mode":{"indicator":{"autonomous":"{name} is replying autonomously","copilot":"{name} is drafting replies for review","muted":"{name} is muted on this thread","pause":"Pause {name} in this thread","resume":"Resume {name} in this thread"}},"monitor":{"coming-soon":{"description":"Harry's live monitoring dashboard is coming soon.","title":"Harry, Monitor"}},"operator-chat-header":{"actions":{"delete":"Delete chat","menu-aria":"Open chat menu","pin":"Pin chat","share":"Share","unpin":"Unpin chat"},"title-placeholder":"Session title"},"operator-composer":{"answer-placeholder":"Type your answer","attach":"Attach files","change-placeholder":"Or tell me what to change","dismiss":"Dismiss","emoji":"Emoji","empty-placeholder":"Ask {agent}… try / for tools or # to reference a thread","enter-to-send":"Enter to send, Shift+Enter for newline","error-cancel-failed":"Couldn't stop the reply. Try again.","error-generation":"Something went wrong. Try again.","error-network":"Couldn't send. Check your connection.","error-send-failed":"We couldn't send that. Your message is still here, give it another try.","error-session-failed":"Couldn't start the session. Try again.","new-messages":"New messages","palette-empty":"No tools match","palette-search-placeholder":"Search tools","palette-tool-analyze-thread-bound":"Will analyze #{number}","palette-tool-analyze-thread-description":"Summary, sentiment, and suggested actions for a thread","palette-tool-analyze-thread-disabled":"Reference a thread with # first","palette-tool-analyze-thread-label":"Analyze thread","palette-tool-analyze-thread-placeholder":"Tell me about…","palette-tool-article-description":"Draft a knowledge base article","palette-tool-article-label":"Article","palette-tool-article-placeholder":"Write about…","palette-tool-canned-reply-description":"Draft a reusable reply for a recurring situation","palette-tool-canned-reply-label":"Canned reply","palette-tool-canned-reply-placeholder":"Draft a reply for when…","palette-tool-knowledge-gaps-description":"Find recurring questions your KB doesn't answer well","palette-tool-knowledge-gaps-label":"Knowledge gaps","palette-tool-knowledge-gaps-placeholder":"Look for gaps in…","question-placeholder":"Or describe your own","retry":"Retry","send":"Send","send-failed":"Couldn't send.","sending":"Sending","stop":"Stop generating","stopped-by-you":"you stopped this reply","thread-fallback-label":"Thread","thread-search-empty":"No threads found","thread-search-loading":"Loading","thread-search-placeholder":"Search threads","try-again":"Try again","voice-error":"Couldn't transcribe. Try again.","voice-max-reached":"Maximum recording length reached.","voice-microphone-denied":"Microphone access denied.","voice-start":"Record voice message","voice-stop":"Stop recording","voice-too-short":"Recording too short.","voice-transcribing":"Transcribing…"},"operator-delete":{"cancel":"Cancel","confirm":"Delete","description":"This can't be undone.","error-generic":"Couldn't delete the chat. Try again.","title":"Delete chat?"},"operator-empty":{"disabled-hint":"Coming soon","greeting":"Hi, I'm {agent}","intro":"Ask about this workspace, or tell me what to set up.","placeholder":"Send a message to {agent}","placeholder-rotating-analyze-thread":"Ask {agent} to analyze a thread…","placeholder-rotating-default":"Ask {agent}… try / for tools or # to reference a thread","placeholder-rotating-draft-reply":"Ask {agent} to draft a canned reply…","placeholder-rotating-find-gaps":"Ask {agent} to spot knowledge gaps…","placeholder-rotating-write-article":"Ask {agent} to write a knowledge article…","starters":{"build-skill":{"label":"Build a skill","prompt":"Build a skill that handles refund requests under 50 dollars"},"create-rule":{"label":"Create a rule","prompt":"Create a rule: when a message is about billing, add the Billing label"},"draft-shipping-reply":{"label":"Draft a shipping reply","prompt":"Write a canned reply for a delayed shipment"},"explain-return-window":{"label":"Explain the return window","prompt":"Draft an article that explains our return window"},"find-threads":{"label":"Find threads","prompt":"Find the threads that mention a refund this week"},"look-up-customer":{"label":"Look up a customer","prompt":"Tell me what we know about a customer"},"read-skill":{"label":"See what a skill does","prompt":"Show me what the refund skill does today"},"search-knowledge":{"label":"Search the knowledge base","prompt":"Do we have an article about password resets?"},"set-sla":{"label":"Set an SLA","prompt":"Set a 1 hour first reply time for billing threads"}},"subtitle":"I can help with auto replying to customers based on your knowledge sources & gathering information you need based on the policies you teach me.","suggestion-analyze-thread-label":"Analyze a thread","suggestion-analyze-thread-prompt":"Analyze thread ","suggestion-canned-reply-label":"Draft canned reply","suggestion-canned-reply-prompt":"Draft a canned reply for ","suggestion-draft-article-label":"Write an article","suggestion-draft-article-prompt":"Write a knowledge article about ","suggestion-find-gaps-label":"Find knowledge gaps","suggestion-find-gaps-prompt":"Find knowledge gaps in customer conversations over the last 7 days."},"operator-feedback":{"cancel":"Cancel","category-missing-knowledge":"Didn't use knowledge base","category-other":"Other","category-style-or-tone":"Style or tone","category-wrong-information":"Wrong information","category-wrong-tool-call":"Wrong tool call","char-counter":"{count}/{max}","details-placeholder":"Tell us what went wrong (optional)","details-question":"Got it. Anything else I should know?","error-generic":"Couldn't save your feedback. Try again.","note-placeholder":"Tell me more (optional)","question":"What was off about my reply?","remove-feedback":"Remove feedback","send":"Send","skip":"Skip","submit":"Submit","thanks-body":"This helps me get the next one right.","thanks-title":"Thanks!","title":"Share feedback"},"operator-interaction":{"approval-cancel":"Cancel","approval-creates-rule":"This creates the rule {ruleName}.","approval-creates-rule-and-sla":"This creates the rule {ruleName} and one SLA policy.","approval-labels":"Messages that match get the {labels} label. | Messages that match get these labels: {labels}.","approval-publish-rule":"Publish rule","approval-publish-rule-and-sla":"Publish rule and SLA","approval-sla-business":"The SLA expects a first reply within {duration} during business hours.","approval-sla-calendar":"The SLA expects a first reply within {duration}, around the clock.","approval-sla-existing":"The rule puts those threads on {name}.","approval-title":"Ready to publish","compiler-question-hint":"Pick one or answer in your own words.","question-search-hint":"Search for a name or answer in your own words.","decision-declined":"You declined publishing","decision-published-rule":"You approved publishing the rule","decision-published-rule-and-sla":"You approved publishing the rule and SLA","draft-out-of-date":"This draft is out of date. Ask for it again.","entity-answer-overflow":"{name} and {count} more","failed-cancel":"Cancel","failed-retry":"Retry publication","failed-title":"Publication failed","sla-choice-create-sub":"{name}, {target}","sla-choice-create-sub-empty":"You set its targets next","sla-choice-create-title":"Create a new one","sla-choice-pick-all-title":"Pick from all","sla-create-default-name":"{scope} SLA","sla-choice-hint":"Or tell me what to change.","sla-choice-pick-sub":"{count} policy in this workspace | {count} policies in this workspace","sla-choice-pick-title":"Pick an existing policy","sla-choice-suggested":"Suggested","sla-choice-target-first-response":"first reply in {duration}","sla-choice-target-next-response":"next reply in {duration}","sla-choice-target-resolution":"resolved in {duration}","sla-create-open-failed":"Could not open the policy card. Try again.","you-chose":"You chose: {answer}"},"operator-message-actions":{"copied":"Copied","copy":"Copy","regenerate":"Regenerate","regenerate-error":"Couldn't regenerate the reply. Try again.","regenerate-stale":"A newer reply was added. Refreshed, try the latest one.","thumbs-down":"Bad response","thumbs-up":"Good response"},"operator-outcome":{"check-failed-sentence":"Try again in a moment.","needs-agent-sentence":"This session has no agent attached. Attach one and ask again.","permission-canned-replies-create":"Adding canned replies needs a permission you do not have.","permission-customers-view":"Reading customer profiles needs a permission you do not have.","permission-hint":"An admin can change this in Settings.","permission-knowledge-create":"Adding articles needs a permission you do not have.","permission-knowledge-view":"Reading articles needs a permission you do not have.","permission-other":"This needs a permission you do not have.","permission-rules-manage":"Managing rules needs admin access.","permission-skills-manage":"Managing skills needs admin access.","permission-skills-publish":"Publishing skills needs admin access.","permission-skills-view":"Reading skills needs a permission you do not have.","permission-threads-view":"Reading threads needs a permission you do not have.","plan-custom-skills":"Custom skills are not part of your plan.","plan-hint":"A workspace owner can change the plan in Settings.","plan-other":"This is not part of your plan.","sent-to-team":"I sent this request to the Gruvi team.","title-check-failed":"This workspace cannot be checked right now","title-needs-access":"You need access for this","title-needs-agent":"Connect an agent first","title-needs-plan":"This needs a different plan","title-not-available":"This is not available yet"},"operator-rename":{"cancel":"Cancel","error-generic":"Couldn't rename the chat. Try again.","placeholder":"Chat title","save":"Save","title":"Rename chat"},"operator-share":{"copy-link":"Copy link","description":"Send this conversation to people in your workspace.","link-copied":"Link copied","link-label":"Workspace link","title":"Share chat","workspace-only-note":"Anyone in this workspace can open this link."},"operator-sidebar":{"add-agent":"Add agent","coming-soon":"Coming soon","delete":"Delete","empty-description":"Start a new conversation and your chats will show up here.","new-session":"Talk with {name}","no-sessions":"No chats yet","older":"Older","past-month":"Previous 30 days","past-week":"Previous 7 days","pin":"Pin","pinned":"Pinned","regenerate-title":"Regenerate title","rename":"Rename","status-done":"Finished","status-failed":"Reply failed","status-idle":"Nothing new","status-needs-you":"Waiting for you","status-working":"Working","today":"Today","unpin":"Unpin","untitled":"New thread","yesterday":"Yesterday"},"operator-tools":{"analyze-thread-active":"Analyzing thread","analyze-thread-done":"Thread analyzed","analyze-thread-key-topics":"Key topics","analyze-thread-open-questions":"Open questions","analyze-thread-relevant-articles":"Relevant articles","analyze-thread-sentiment-mixed":"Mixed","analyze-thread-sentiment-negative":"Negative","analyze-thread-sentiment-neutral":"Neutral","analyze-thread-sentiment-positive":"Positive","analyze-thread-suggested-actions":"Suggested actions","analyze-thread-summary":"Summary","begin-workspace-workflow-active":"Preparing the draft","begin-workspace-workflow-done":"Prepared the draft","cancel-workspace-workflow-active":"Stopping","cancel-workspace-workflow-done":"Stopped the draft","collect-reference-photos-active":"Collecting reference photos","collect-reference-photos-add":"Add","collect-reference-photos-add-aria":"Add reference photo","collect-reference-photos-confirm":"Add photos","collect-reference-photos-count":"{current} of {max}","collect-reference-photos-done":"Reference photos","collect-reference-photos-help":"References show the reviewer what the item looks like. The review standard still decides what counts as damage.","collect-reference-photos-max":"Maximum {max} photos","collect-reference-photos-optional":"Optional","collect-reference-photos-remove":"Remove photo","collect-reference-photos-saved-subtitle":"Saved to the skill definition","collect-reference-photos-saved-title":"{count} reference photo added | {count} reference photos added","collect-reference-photos-send-failed":"Couldn't save that. Please try again.","collect-reference-photos-skip":"Skip this","collect-reference-photos-skipped-subtitle":"The reviewer judges against the written standard alone.","collect-reference-photos-skipped-title":"Reference photos skipped","collect-reference-photos-title":"Reference photos","collect-reference-photos-upload-failed":"Couldn't upload that image. Try again.","discover-capabilities-active":"Checking what this workspace can do","discover-capabilities-done":"Checked what this workspace can do","generate-article-active":"Drafting article","generate-article-audience-both":"For customers and team","generate-article-audience-customer":"For customers","generate-article-audience-internal":"For internal use","generate-article-coming-next":"Coming next","generate-article-copied":"Copied","generate-article-copy":"Copy","generate-article-done":"Article drafted","generate-article-download-docx":"Download Word","generate-article-download-docx-failed":"Couldn't generate the document. Try again.","generate-article-download-failed":"Couldn't generate PDF. Try again.","generate-article-download-md":"Download Markdown","generate-article-download-other-format":"Choose another format","generate-article-download-pdf":"Download PDF","generate-article-downloading":"Preparing PDF","generate-article-open-docx":"Open Word","generate-article-open-pdf":"Open PDF","generate-article-picker-cancel":"Cancel","generate-article-picker-confirm":"Save to KB","generate-article-picker-empty":"Create a folder in your knowledge base first, then save.","generate-article-picker-other":"Other folders","generate-article-picker-subtitle":"Pick a destination in your knowledge base","generate-article-picker-suggested":"Suggested","generate-article-picker-title":"Save to folder","generate-article-picker-uncategorized":"No folder","generate-article-picker-website-folder-disabled":"Website folders sync from a crawl. Pick a manual folder.","generate-article-preparing-docx":"Preparing Word","generate-article-save-failed":"Couldn't save to KB. Try again.","generate-article-save-to-kb":"Save to KB","generate-article-saved-view":"Saved, view article","generate-article-saving":"Saving","generate-article-word-count":"{count} word | {count} words","generate-canned-reply-active":"Drafting canned reply","generate-canned-reply-copied":"Copied","generate-canned-reply-copy":"Copy","generate-canned-reply-count":"{count} placeholder | {count} placeholders","generate-canned-reply-done":"Canned reply ready","generate-canned-reply-edit":"Edit","generate-canned-reply-edit-done":"Done","generate-canned-reply-edit-placeholder":"Edit the body. Wrap variables in single braces.","generate-canned-reply-fill-hint":"Fill in {names} before sending.","generate-canned-reply-picker-cancel":"Cancel","generate-canned-reply-picker-category-create":"Create '{name}'","generate-canned-reply-picker-category-create-failed":"Couldn't create category. Please try again.","generate-canned-reply-picker-category-empty":"No categories yet. Type a name to create one.","generate-canned-reply-picker-category-label":"Category","generate-canned-reply-picker-category-none":"No category","generate-canned-reply-picker-category-search-placeholder":"Search or type to create","generate-canned-reply-picker-placeholders":"Placeholders","generate-canned-reply-picker-save":"Save","generate-canned-reply-picker-shortcode-conflict":"Already used by '{title}'","generate-canned-reply-picker-shortcode-label":"Shortcode","generate-canned-reply-picker-shortcode-optional":"optional","generate-canned-reply-picker-shortcode-placeholder":"refund-policy","generate-canned-reply-picker-subtitle":"Keep it for later","generate-canned-reply-picker-title":"Save canned reply","generate-canned-reply-picker-title-conflict":"Already used by another canned reply","generate-canned-reply-picker-title-conflict-in-category":"Already used in this category","generate-canned-reply-picker-title-label":"Title","generate-canned-reply-picker-title-placeholder":"Short, descriptive name","generate-canned-reply-placeholders":"Fill in before sending","generate-canned-reply-save-empty-title":"Add some body text to save","generate-canned-reply-save-failed":"Couldn't save canned reply. Please try again.","generate-canned-reply-save-to-library":"Save","generate-canned-reply-saved-view":"View in library","generate-canned-reply-saving":"Saving","get-customer-context-action-next-steps":"Suggest next steps","get-customer-context-action-next-steps-prompt":"What should I do next for {customer}?","get-customer-context-action-patterns":"Spot patterns","get-customer-context-action-patterns-prompt":"What patterns do you see in {customer}'s support history?","get-customer-context-active":"Loading customer context","get-customer-context-done":"Loaded customer context","get-customer-context-not-found":"Customer not found","get-customer-context-recent-threads":"Recent threads","get-customer-context-tenure":"{count} day with us | {count} days with us","get-customer-context-thread-count":"{count} thread | {count} threads","inspect-knowledge-map-active":"Looking at what knowledge exists","inspect-knowledge-map-done":"Looked at the knowledge base","lookup-active":"Reading exact values","lookup-done":"Read exact values","open-knowledge-item-active":"Reading an article","open-knowledge-item-done":"Read article","read-skill-active":"Reading the skill","read-skill-done":"Read the skill","report-capability-gap-active":"Checking whether Gruvi can do this","report-capability-gap-blocked":"Checked: this needs access this workspace does not have","report-capability-gap-done":"Sent a request to the Gruvi team","report-capability-gap-supported":"Checked: this is already available","search-knowledge-action-draft":"Draft a new article","search-knowledge-action-draft-prompt":"Draft a new article on \"{query}\"","search-knowledge-action-use":"Use this article","search-knowledge-action-use-prompt":"Draft a reply citing \"{title}\"","search-knowledge-active":"Searching knowledge base","search-knowledge-direct-tables":"+{count} data table | +{count} data tables","search-knowledge-done":"Searched knowledge base","search-knowledge-empty":"No articles matched","search-knowledge-quality-none":"Weak match","search-knowledge-quality-partial":"Partial match","search-knowledge-quality-strong":"Strong match","search-threads-action-analyze":"Analyze these threads","search-threads-action-analyze-prompt-plural":"Analyze this thread and tell me what is most urgent | Analyze these {count} threads and tell me what is most urgent","search-threads-active":"Searching threads","search-threads-done":"Searched threads","search-threads-empty":"No threads matched","search-threads-shown":"{count} thread shown | {count} threads shown","unknown-customer":"Unknown customer","untitled-thread":"Untitled thread","update-skill-draft-active":"Saving the skill draft","update-skill-draft-done":"Saved the skill draft"},"operator-turn":{"action-done":"Worked on this","fold-summary":"Worked for {duration} · {count} action | Worked for {duration} · {count} actions","fold-summary-actions":"{count} action | {count} actions","fold-summary-duration":"Worked for {duration}","fold-summary-plain":"What I did","step-failed":"That step did not finish.","waiting-for-answer":"Waiting for your answer","waiting-for-decision":"Waiting for your decision","waiting-for-you":"Waiting for you","working":"Working","writing":"Writing the answer"},"operator-workbench":{"action-label-created":"Created the label","action-label-found":"Found the label","action-not-a-rule":"Checked: this is not a rule","action-prepare-failed":"Could not prepare the rule","action-preview-updated":"Updated the rule preview","action-publish-blocked":"Publishing needs a permission you do not have","action-publish-failed":"Could not publish the rule","action-rule-already-published":"Found the rule already published","action-rule-published":"Published the rule","action-sla-created":"Created the SLA policy","action-start-failed":"Could not start this build","badge-already-created":"Already created","badge-blocked":"Needs access","badge-draft":"Draft","badge-live":"Live","badge-needs-decision":"Needs one decision","badge-not-published":"Not published","badge-ready":"Ready to publish","blocked-line":"You cannot publish this, but you can review the draft.","blocked-other":"Publishing needs a permission you do not have.","blocked-rules-manage":"Managing rules needs admin access.","chip-more-options":"{labels} or {count} more?","close":"Close the draft","collapse":"Hide the draft","duration-days":"{count} day | {count} days","duration-hours":"{count} hour | {count} hours","duration-minutes":"{count} minute | {count} minutes","expand":"Show the draft","failure-active-rule-limit":"This workspace already has {max} active rules. Turn one off, or upgrade.","failure-failed":"The rule could not be published.","failure-invalid-rule":"The rule could not be published.","failure-invalid-sla-scope":"One of the companies, customers or labels this policy covers no longer exists.","failure-missing-default-sla":"Set a default SLA policy first.","failure-stale-workflow":"This draft is out of date. Ask for it again.","open-rule":"Open rule","open-sla":"Open SLA policy","sla-bundled":"Bundled with this rule","sla-clock":"Clock","sla-clock-business":"Business hours","sla-clock-calendar":"Around the clock","sla-metric-first-response":"First reply","sla-metric-next-response":"Next reply","sla-metric-resolution":"Resolution","sla-choice-chip":"Pick an SLA policy","sla-name":"Name","sla-new":"New SLA policy","sla-target":"Within {duration}","sla-target-priority":"Within {duration}, {priority} priority","sla-waiting":"Waiting on your answer","title-rule":"Rule draft","title-unknown":"Draft"},"popover":{"active-label":"Active","all-actions":"All Actions","empty-hint":"Type /{name} in the composer to get started","mute":"Mute","muted-indicator":"(muted)","muted-label":"Muted on this thread","new-personality":"New personality","no-personalities":"No custom personalities yet","personalities":"Personalities","recent":"Recent","recent-tone":"Tone · {tone}","recent-translate":"Translate → {lang}","settings":"Agent settings","unmute":"Unmute"},"settings":{"entry":"Agent settings","subtitle":"Control how your agent works across your inbox.","title":"{name} settings"},"toast":{"error":"Something went wrong. Please try again.","muted":"{name} muted on this thread","rate-limit":"Please wait a moment.","retry":"Retry","translate-unavailable":"Translation is not available here.","unmuted":"{name} unmuted on this thread"},"tone":{"apologetic":"Apologetic","concise":"Concise","direct":"Direct","empathetic":"Empathetic","formal":"Formal","friendly":"Friendly","professional":"Professional"},"toolbar":{"active":"{name} is active on this thread","generating":"{name} is thinking...","muted":"{name} is muted. Click to unmute","off":"{name} auto-replies are off"},"translate":{"picker-placeholder":"Search languages..."}},"announcements":{"close":"Close","comment-cancel":"Cancel","comment-delete":"Delete","comment-edit":"Edit","comment-placeholder":"Leave a comment...","comment-submit":"Send","dialog-title":"Announcements","empty":"No announcements right now","empty-subtitle":"You're all caught up!","header":"What's new","navigate-next":"Next announcement","navigate-previous":"Previous announcement","navigate-to":"Go to announcement {number}","new-badge":"New","progress":"{current} of {total}","reactions":{"celebrate":"Celebrate","eyes":"Interesting","heart":"Love","thumbs-up":"Like"},"view-comments":"{count} comment | {count} comments"},"app":{"add":"Add","back":"Back","beta":"Beta","cancel":"Cancel","change":"Change","close":"Close","continue":"Continue","copy":"Copy","create":"Create","delete":"Delete","done":"Done","errors":{"load-invitations":"Could not load invitations. Try again.","load-members":"Could not load members. Try again.","load-roles":"Could not load roles. Try again.","load-teams":"Could not load teams. Try again.","invalid-code":"Please enter a valid 6-digit code.","invalid-email":"Please enter a valid email address.","required":"Required","save-preference":"Failed to save preference. Please try again.","unknown":"An unknown error occurred. Please try again."},"finish":"Finish","form":{"email-address":"Email address","title":"Title"},"just-now":"just now","learn-more":"Learn more","legal":{"dpa":"Data Processing Agreement","master-subscription-agreement":"Master Subscription Agreement","privacy":"Privacy Policy","terms":"Terms of Service"},"load-more":"Load more","login":"Log in","logout":"Log out","name":"Gruvi","new":"New","next":"Next","open-menu":"Open menu","placeholders":{"email":"Enter your email"},"popular":"Popular","preview":"Preview","resend":"Resend","retry":"Retry","role":"Role","roles":{"admin":"Admin","member":"Member","owner":"Owner"},"save":"Save","send-invites":"Send invites","signup":"Sign up","skip":"Skip","skip-this":"Skip this","soon":"Soon","submit":"Submit","update":"Update","week":{"fri":"F","mon":"M","sat":"S","sun":"S","thu":"T","tue":"T","wed":"W"}},"archive-customer":{"dialog":{"cancel":"Cancel","confirm":"Archive Customer","description":"Archived customers are removed from your active list but their threads stay intact. You can unarchive them anytime.","title":"Archive {name}?"}},"attachment":{"download":"Download","error":{"invalid-type":"File type not supported","too-large":"File is too large (max 10MB)","too-large-video":"Video is too large (max 50MB)","too-large-video-limit":"Video is too large (max {size}MB)","too-many":"Too many attachments (max 10)","upload-failed":"Upload failed"},"remove":"Remove","retry":"Retry","uploading":"Uploading...","view":"View"},"auth":{"back-to-login":"Back to login","email-check":{"didnt-get-email":"Didn’t get the email?","enter-code-manually":"Enter code manually","resent":"Sent again.","subtitle":"We’ll email a link to verify this address {email}.","title":"Check your email"},"email-code":{"didnt-get-email":"Didn’t get the code?","errors":{"invalid-code":"Please enter a valid 6-digit code."},"placeholder":"Enter your 6-digit code","subtitle":"We've sent a 6-digit code to {email}.","title":"Enter the code"},"error":{"state-mismatch":"That sign-in attempt has expired or was already used. Please sign in again.","subtitle":"Something went wrong while signing you in, you can try again in just a moment.","title":"Oops, that didn’t work"},"logged-in-as":"Logged in as {email}","logged-in":{"subtitle":"You’re logged in in another tab, you can continue here or just close this tab.","title":"You’re logged in!"},"logout-failed":"Couldn’t log you out. Try again.","magic-link-send-failed":"We couldn’t send the email. Try again.","login":{"email":{"subtitle":"Enter your email to sign in to your account.","title":"Continue to Gruvi"},"no-account":{"different-account":"Log in with a different account","footnote":"Nothing was created. We only checked for an existing account.","signup":"Sign up for Gruvi","subtitle":"There’s no Gruvi account for {email} yet. Would you like to create one?","subtitle-unknown":"There’s no Gruvi account for this Google account yet. Would you like to create one?","title":"We couldn’t find your account"},"picker":{"account":"Don’t have an account? {signup}","email":"Log in with Email","google":"Log in with Google","google-unreachable":"Couldn’t reach Google sign-in. Check your connection and try again.","last-used":"Last used","passkey":"Sign in with a passkey","passkey-not-found":"No passkey found for your account. Try another sign-in method.","subtitle":"How do you want to log in?","title":"Welcome back"}},"signup":{"email":{"subtitle":"We’ll email a link to verify this address.","title":"What’s your email address?"},"existing-account":{"continue":"Continue with this account","different-account":"Sign up with a different account","footnote":"Signing up with a different account logs this one out first.","subtitle":"You’re signed in as {email}.","title":"You already have an account"},"picker":{"account":"Already have an account? {login}","agreement":"By creating an account, you agree to our {terms} and {dpa}.","email":"Register with Email","google":"Register with Google","legal-agreement-simple":"By creating an account, you agree to our {msa} and {privacy}.","subtitle":"How do you want to register?","title":"Let's get you set up"}}},"automation":{"builder":{"rule-opening":"Describe when the rule should run and what it should do.","skill-opening":"Describe what you want this skill to help customers do.","change-opening":"Describe what you want to change.","rule-placeholder":"Describe your rule…","skill-placeholder":"Describe your skill…","change-placeholder":"Describe your changes…","back-to-skills":"Back to skills","chip-hint":"Pick one or answer in your own words.","create-draft":"Create draft","draft-label":"Your draft so far","footer-caption":"Saved as you answer. Nothing goes live without you.","ghost-card-body":"Answer the first question and the card fills in as you go.","ghost-card-hint":"Answer the first question and the card fills in as you go.","ghost-card-title":"Your skill takes shape here","intro-how":"Tap a suggested answer, type your own, or press the mic and speak.","needs-connection-desc":"You'll pick the exact account when the draft opens in the editor.","opening":"Let's teach your team a new skill. What should it do for your customers?","rail-label":"How it will run","save-later":"Save and finish later","start":"Start building","steps":{"describe-body":"Tell the wizard what the skill should do, in your own words.","describe-title":"Describe it","launch-body":"It arrives as a draft and nothing goes live until you say so.","launch-title":"Rehearse, then go live","shape-body":"Answer short questions. Tap, type, or speak while the draft assembles.","shape-title":"Shape the rules"},"subtitle":"{name} is drafting a new skill with you","title":"Build it together","untitled":"Untitled skill"},"built-in":{"assignment":{"purpose-none":"Turn this on to hand each new thread to a teammate automatically. Right now threads wait unassigned until someone picks them up.","purpose-round-robin":"Assigns incoming threads to whoever is online, in turn, so nobody drowns.","purpose-specific-person":"Routes every new thread to one chosen person while they are online.","settings":"Assignment settings","title":"Auto-assign new threads"},"auto-close":{"purpose":"Resolves threads after {hours} hours without a reply, so the inbox stays honest.","settings":"Thread settings","title":"Close quiet threads"},"csat":{"purpose":"Sends the post-chat survey when a thread is resolved. Configured per channel.","settings":"Channel settings","title":"Ask for a rating"},"manage":"Manage","sla":{"purpose":"Watches the clock on every thread, warns before a deadline slips, and never counts time the customer is holding the ball."},"unsnooze":{"purpose":"Brings a snoozed thread back the moment its timer ends, marked unread.","title":"Wake snoozed threads"}},"connection-type":{"account":"account connection","billing":"billing connection","commerce":"commerce connection","generic":"connection","scheduling":"scheduling connection"},"describe":{"continue-wizard":"Continue with Gruvi wizard","dialog-description":"Tell the wizard what to change. Changes save to this skill as you go; publishing them stays a separate step.","done":"Done","edit-myself":"Edit it myself","footer-caption":"Changes save to this skill as you go. They go live only when you publish.","opening":"We're editing {name}. Tell me what to change."},"sla":{"picker":{"confirm":"Use this policy","description":"Each one shows the times it promises.","empty":"This workspace has no response time policies yet.","no-targets":"No targets yet","range":"{from} to {to}","title":"Pick an SLA policy"}},"tabs":{"activity":"Activity","connections":"Connections","label":"Skills sections","store":"Skill store","suggestions":"Suggestions","your-skills":"Your skills"}},"avatar":{"builder":{"cancel-button":"Cancel","color-label":"Color","confirm-discard":"Discard unsaved changes?","custom-too-large":"That image is over 1 MB. Pick a smaller one.","custom-upload-hint":"Shown in a circle everywhere your agent appears. Square works best. PNG or JPG, up to 1 MB.","edit-button":"Edit avatar","name-aria-label":"Agent name","name-placeholder":"Name your agent","name-required":"Name is required","name-too-long":"Name must be 30 characters or fewer","none-option":"None","orb-at-ease":"At ease","orb-color":"Color","orb-thinking":"Thinking","preview-label":"Preview","randomize-button":"Randomize","reset-button":"Reset","save-button":"Save","save-error":"Could not save. Please try again.","source-custom":"Your image","source-orb":"Gruvi Orb","source-persona":"Persona","title":"Personalize agent","title-named":"Personalize {name}","upload-error":"Could not upload the image. Try again."},"category":{"accessories":"Accessories","eyes":"Eyes","face":"Face","facial-hair":"Facial hair","hair":"Hair","hat":"Hat","headphones":"Headphones","mouth":"Mouth"}},"billing":{"plan-picker":{"description":"Choose the plan that fits your team. You can change it anytime.","description-trial-ended":"Pick a plan to turn your AI back on. You can change it anytime.","opening-checkout":"Opening checkout","permission-error":"You don't have billing access for this workspace. Ask a workspace owner to change the plan.","title":"Pick a plan"},"trial-ended":{"body-admin":"Add a card to switch {plan} back on. Until then the AI is paused. You'll still receive customer messages and can reply yourself.","body-member":"The AI is paused. You'll still receive customer messages and can reply yourself. The workspace owner can turn {plan} back on.","cta":"Add card and continue on {plan}","data-safe":"Everything is saved: threads, knowledge, channels, AI setup","price-note":"{price}/month. Cancel anytime.","talk":"Talk to us","talk-sent":"Request sent. We'll reach out shortly.","title":"Your {plan} trial has ended"}},"block-customer":{"dialog":{"cancel":"Cancel","confirm":"Block Customer","description":"This will block the customer from sending messages and soft-delete all their threads. This action cannot be undone for existing threads.","title":"Block {name}"}},"business-hours":{"add-holiday":"Add holiday","add-interval":"Add interval","all-day":"24 hours","always-open":"Always open","always-open-description":"Your team is available around the clock. Turn this off to set weekly hours.","and":"and","card-description":"When your team is open. Everything that reacts to your hours follows this by default.","card-title":"Business hours","closed":"Closed","closed-all-week":"Closed all week.","copy-apply":"Apply","copy-to":"Copy to","copy-to-days":"Copy to other days","edit-workspace-hours":"Edit workspace hours","holiday-name-placeholder":"Name this holiday","holidays-desc":"Days the workspace is closed regardless of the weekly schedule.","holidays-label":"Holidays","hours-overlap":"These hours overlap","next-day":"next day","no-holidays":"No holidays added yet.","open":"Open","pick-date":"Pick a date","preset-clear":"Clear","preset-every-day":"Every day","preset-weekdays":"Weekdays 9 to 18","remove-holiday":"Remove holiday","remove-interval":"Remove interval","save":"Save changes","save-error":"Could not save your business hours. Please try again.","summary-group-separator":"; ","timezone-change":"Change","timezone-context":"These hours are in {timezone}, your workspace timezone.","to":"to","using-workspace-hours":"Using workspace business hours","weekly-schedule-label":"Weekly schedule"},"chatter":{"config":{"deployment":{"activate":"Activate","channels":"Channels","deactivate":"Deactivate","deactivate-confirm-description":"The agent will stop responding to customers until reactivated.","deactivate-confirm-title":"Deactivate agent?","default-note":"This is the default agent and cannot be deleted.","delete-agent":"Delete Agent","delete-confirm-description":"This will permanently delete this agent and all its configuration. This cannot be undone.","delete-confirm-title":"Delete agent?","email":"Email","live-chat":"Live Chat Widget","saved":"Saved","title":"Deployment"},"identity":{"avatar":"Avatar","description":"Description","greeting":"Greeting","name":"Name","title":"Identity"},"knowledge":{"add-source":"Add Source","agent-specific":"Agent-Specific","empty":"No agent-specific sources yet.","shared":"Shared (from workspace)","shared-note":"Shared sources are managed in the Agents Hub page.","title":"Knowledge Sources"},"memory":{"add-item":"+ Add memory","empty":"No memory items yet.","key-placeholder":"e.g., Company name","saved":"Saved","subtitle":"Facts {name} always remembers.","title":"Memory","value-placeholder":"e.g., Acme Corp"},"personality":{"answer-length":"Answer Length","concise":"Concise","empathy":"Empathy","empathy-high":"High","empathy-low":"Low","formality":"Formality","formality-casual":"Casual","formality-formal":"Formal","instructions":"Custom Instructions","instructions-placeholder":"Add specific rules or guardrails for this agent...","standard":"Standard","thorough":"Thorough","title":"Personality","tone":"Tone","tone-direct":"Direct","tone-warm":"Warm"},"skills":{"collect-info":"Collect customer info (forms)","kb-answers":"Answer questions from knowledge sources","order-status":"Check order status (requires Shopify)","refunds":"Process refunds (requires Stripe)","summarize":"Summarize conversations","title":"Skills","translate":"Translate messages"}},"detail":{"chat":{"activate-action":"Activate","activate-confirm-description":"{name} will start responding to customer conversations. Ready?","activate-confirm-title":"Activate {name}?","content-gaps-tab":"Content Gaps","deactivate-action":"Deactivate","deactivate-confirm-description":"This will stop {name} from responding to customers. Are you sure?","deactivate-confirm-title":"Deactivate {name}?","tab":"Chat","training-session":"Training session","you-testing":"You (testing as customer)"},"empty":{"from-kb":"From your knowledge sources","from-website":"From your website","more-questions":"Suggest more questions","ready":"{name} is ready to train!","subtitle":"Try asking me something your customers would ask.","tricky-ones":"Tricky ones"},"feedback":{"bad":"Bad response","fix-kb":"Update knowledge sources","fix-memory":"Add to memory","fix-personality":"Adjust personality","good":"Good response","missing-answer":"Didn't find the answer (but it exists)","note":"Leave a note","note-label":"Add a note (optional):","note-placeholder":"What was wrong with this response?","other":"Other","prompt":"How did I do?","save":"Save","should-escalate":"Should have escalated to human","suggested-fixes":"Suggested fixes:","tone-off":"Tone was off","what-went-wrong":"What went wrong?","wrong-info":"Wrong information","wrong-length":"Too long / too short"},"gaps":{"coming-soon-description":"When {name} struggles with real customer questions, those gaps will appear here with suggested fixes.","empty":"No content gaps!","empty-description":"{name} is handling everything well.","empty-hint":"Keep training to make sure it stays that way."},"new-test":"New Test","sidebar":{"agents":"Agents","conversations":"Conversations","create":"Create agent","new-conversation":"New conversation","of":"of","settings":"Settings","usage":"Usage"},"test-mode-banner":"Test Mode. Responses use your current config","test-placeholder":"Send a message to test {name}...","threads-toggle":"Threads","usage-toggle":"Usage","usage":{"back":"Back to Threads","csat":"CSAT","kb-hits":"KB hit/miss","messages":"Messages handled","resolution":"Resolution rate","response-time":"Avg response time","title":"{name} Stats","top-topics":"Top Topics"}},"hub":{"agent":{"active":"Active","configure":"Configure","conversations-this-week":"{count} conversations this week","default":"Default","draft":"Draft","muted":"Muted","setup":"Setup","unconfigured-cta":"Set Up {name}","unconfigured-description":"Add knowledge sources and set the personality to start handling customer conversations.","unconfigured-title":"Your AI agent is ready to be configured."},"description":"Configure AI agents that handle customer conversations.","knowledge":{"add-source":"Add Source","manage":"Manage","subtitle":"These sources are available to all agents.","title":"Shared Knowledge Sources"},"mode":{"autopilot":"Autopilot","autopilot-description":"Agent handles conversations autonomously. Escalates when needed.","copilot":"Copilot","copilot-description":"Agent drafts responses for human agents to review and send.","note":"Applies to all agents. You can mute individual agents per-thread in the inbox.","off":"Off","off-confirm-description":"This will stop all AI agents from responding to customers. Are you sure?","off-confirm-title":"Turn off AI agents?","off-description":"Agent is disabled. No AI responses.","title":"Mode"},"new-agent":{"agents-used":"{used} of {total} agents used","label":"Create New Agent","upgrade":"Upgrade to add more agents"},"title":"Chatter Agents","usage":{"agents-of":"{used} of {total} agents used ({plan})","csat":"CSAT rating","last-30-days":"Last 30 days","last-7-days":"Last 7 days","messages":"Messages handled","resolved":"Resolved rate","this-month":"This month","title":"Usage"}}},"cheat-sheet":{"toggle":"Show keyboard shortcuts"},"color-picker":{"custom":"Custom","preset-name":{"blue":"Blue","cyan":"Cyan","emerald":"Emerald","gray":"Gray","orange":"Orange","pink":"Pink","red":"Red","violet":"Violet","yellow":"Yellow"},"presets":"Presets"},"command-palette":{"add-knowledge-content":"Add knowledge content","add-label":"Add label...","add-note":"Add internal note","agent-draft-reply":"{name}: Draft reply","agent-mute":"{name}: Mute on this thread","agent-rewrite":"{name}: Rewrite text","agent-summarize":"{name}: Summarize thread as note","agent-tone":"{name}: Adjust tone","agent-translate":"{name}: Translate","assign-to":"Assign to...","assign-to-me":"Assign to me","attach-file":"Attach file","block-customer":"Block Customer","browse-canned-replies":"Browse canned replies","canned-replies-uncategorized":"Uncategorized","close-thread":"Close thread","create-tracker":"Create tracker","description":"Search for a command to run...","emoji-picker":"Emoji picker","footer":{"back":"Back","close":"Close","navigate":"Navigate","select":"Select"},"g-prefix":{"customers":"Customers","inbox":"Inbox","knowledge":"Knowledge","label":"Navigate","members":"Members","settings":"Settings"},"global-search":{"groups":{"articles":"Articles","canned-replies":"Canned replies","customers":"Customers","messages":"Messages","threads":"Threads"},"no-results":"No matches across your workspace","searching":"Searching your workspace...","unnamed-customer":"Unnamed customer","untitled-article":"Untitled article","untitled-message":"Untitled message","untitled-thread":"Untitled thread"},"go-customers":"Go to Customers","go-feature-wall":"Go to Feature Wall","go-inbox":"Go to Inbox","go-insights":"Go to Insights","go-knowledge":"Go to Knowledge Sources","go-offline":"Go offline","go-members":"Go to Members","go-settings":"Go to Settings","go-skills":"Go to Skills","groups":{"knowledge":"Knowledge Sources","navigation":"Navigation","recent":"Recent","search-results":"Results","thread-actions":"Thread Actions","threads":"Threads","top-result":"Top Result","ui":"Appearance","you":"You"},"insert-canned-reply":"Insert canned reply","jump-to-thread-not-found":"Thread {prefix}-{number} not found","jump-to-thread-not-found-no-prefix":"Thread #{number} not found","jump-to-thread-result":"Open {prefix}-{number}","jump-to-thread-result-no-prefix":"Open thread #{number}","kb-add-topic":"Add topic","kb-import-website":"Import website","kb-upload-document":"Upload document","kb-write-article":"Write an article","keyboard-shortcuts":"Keyboard shortcuts","labels-empty":{"hint":"Type a name above to create one.","title":"No labels yet"},"labels":{"create-row":"Create label \"{name}\"","ungrouped":"Ungrouped"},"mark-as-not-spam":"Not Spam","mark-as-spam":"Mark as Spam","next-thread":"Next thread","no-results":"No results found","notifications":"Notifications","open-agent":"{name} Agent","previous-thread":"Previous thread","recent":{"unavailable-on-current-thread":"Not available on this thread"},"remove-group-label":"Remove {name}","reopen-thread":"Reopen thread","reply":"Reply","resolve":"Resolve thread","search-canned-replies":"Search canned replies...","search-group-labels":"Search {name} values...","search-labels":"Search labels...","search-members":"Search members...","search-placeholder":"Type a command or search...","search-priority":"Search priority levels...","search-threads":"Search threads...","search-threads-placeholder":"Search by name, title, or ID...","set-group":"Set {name}","set-presence-active":"Set status: Active","set-presence-away":"Set status: Away","set-presence-offline":"Set status: Offline","set-presence-online":"Set status: Online","set-priority":"Set priority","set-theme-dark":"Switch to dark theme","set-theme-light":"Switch to light theme","set-theme-system":"Use system theme","snooze-thread":"Snooze thread","submit-feature":"Submit a feature","thread-details":"Thread details","title":"Command Palette","unsnooze-thread":"Unsnooze thread","view-titles":{"assign":"Assign to","canned-replies":"Canned replies","label-group":"Label","labels":"Labels","priority":"Priority","snooze":"Snooze","snooze-custom":"Snooze custom","threads":"Threads"},"transcribe-my-speech":"Transcribe my speech","voice-message":"Voice message"},"common":{"clear-search":"Clear search","schedule":{"days-label":"Days","from":"From","timezone-link":"Change timezone","timezone-note":"Hours are based on your workspace timezone ({timezone}).","to":"To"},"timezone-select":{"empty":"No timezone found.","placeholder":"Select timezone","search-placeholder":"Search timezones..."}},"composer":{"chatter-menu":{"aria-label":"Switch AI agent for this thread","empty-configure":"Configure a Chatter in settings","empty-no-matches":"No matching agents","footer-manage-agents":"Manage agents","footer-mute-thread":"Mute AI for this thread","footer-unmute-thread":"Unmute AI for this thread","input-placeholder":"Switch agent...","section-chatters":"Chatters"},"dock":{"action-handoff":"Write a handoff note","action-handoff-prompt":"Writes a summary of the thread . Useful if you're assigning it to a new person in your team.","action-reply":"Draft a reply","action-reply-prompt":"Draft a reply to the customer's latest message.","answer":"Answer","answer-placeholder":"Answer {agent}...","cancel-draft":"Discard draft","close":"Close","dismiss":"Dismiss","draft-check-blocked":"{agent} found a claim it could not back up. Check the draft before you send it.","draft-edit-placeholder":"Edit the draft before inserting...","draft-failed":"Couldn't draft a reply","draft-label-note":"Draft note","draft-label-reply":"Draft reply","drafting":"{agent} is drafting","drafting-compact":"Drafting","freeform-answer-placeholder":"Type your answer...","generic-error":"Something went wrong. Try again.","input-placeholder":"Message {agent}...","insert":"Insert","insert-note":"Insert as note","insert-send":"Insert & send","launcher-placeholder":"Or tell {agent} what to do","locked-limit-message":"You've reached your AI usage limit for this plan. Upgrade for more headroom.","locked-message":"You've reached your AI usage limit for this plan.","locked-title":"AI usage limit reached","locked-trial-message":"The AI is paused. You'll still receive customer messages and can reply yourself.","locked-trial-title":"Your trial has ended","locked-upgrade":"Upgrade your plan","manage-agents":"Manage agents","maximize":"Maximize","minimize":"Minimize","more-actions":"More actions","mute":"Mute AI for this thread","needs-your-input":"{agent} needs your input","needs-your-input-compact":"Needs your input","note-ready":"Note ready","no-thread":"Open a conversation to draft a reply with AI.","open-error":"Couldn't open the dock. Try again.","question-hint":"Pick one or type your own","record":"Record a voice message","reset-error":"Couldn't start a fresh draft. Try again.","reply-ready":"Reply ready","review-note":"Review note","review-reply":"Review reply","send":"Send","send-error":"Couldn't send your message. Try again.","start-fresh":"Start fresh","status-drafting":"drafting...","status-paused":"paused","status-ready":"ready to draft","stop":"Stop","try-again":"Try again","unmute":"Unmute AI for this thread","working":{"checking-customer":"{agent} is checking the customer's history","checking-details":"{agent} is checking the details","composing":"{agent} is putting it together","connecting":"{agent} is connecting the dots","looking-similar":"{agent} is looking at similar conversations","reading-conversation":"{agent} is reading the conversation","refining":"{agent} is refining the wording","reviewing":"{agent} is double-checking the details","searching-knowledge":"{agent} is searching the knowledge base","structuring":"{agent} is shaping the response","thinking":"{agent} is thinking it through","tone":"{agent} is getting the tone right","weighing":"{agent} is weighing the options","wording":"{agent} is choosing the right words"},"you-asked":"You asked"},"hashtag-menu":{"action-reply":"{agent} drafts a reply","action-rewrite":"{agent} rewrites your draft","action-summarize":"{agent} summarizes the thread","aria-label":"Canned replies and agent actions","empty-no-matches":"No matching items","no-canned-replies":"No canned replies yet.","no-canned-replies-action":"Create one in settings","section-agent-actions":"Agent actions","section-canned-replies":"Canned replies"},"menu-footer":{"dismiss":"to dismiss","navigate":"to navigate","select":"to select"},"slash-menu":{"ai-locked-hint":"Upgrade to use AI","aria-label":"AI tools","back-to-tools":"Back to tools","empty-no-matches":"No matching tools","input-placeholder":"Type a command or instruction...","instruction-hint":"Send as instruction to {agent}: '{query}'","limit-description":"Upgrade to keep using AI in your replies","limit-title":"You've reached your AI limit","limit-upgrade":"Upgrade","requires-text-hint":"Type a draft first","tone-apologetic":"Apologetic","tone-concise":"Concise","tone-empathetic":"Empathetic","tone-friendly":"Friendly","tone-professional":"Professional","tool-reply-description":"Draft a reply using thread context","tool-reply-name":"Reply","tool-rewrite-description":"Rewrite current text clearly and professionally","tool-rewrite-name":"Rewrite","tool-summarize-description":"Summarize the conversation","tool-summarize-name":"Summarize","tool-tone-description":"Adjust the tone of your text","tool-tone-name":"Tone","tool-translate-description":"Translate to another language","tool-translate-name":"Translate"}},"connection":{"island":{"connected":"Connected","measuring":"Checking connection...","offline":"Offline","quality-good":"Good connection","quality-slow":"Slow connection","quality-very-good":"Very good connection","reconnecting":"Reconnecting"},"offline":"You're offline. Check your internet connection.","reconnecting":"Connection lost. Reconnecting...","recovered":"Connected","refresh":"Retry now"},"context-menu":{"clean-up":"Clean up","expand":"Expand","more-languages":"More...","rewrite":"Rewrite","shorten":"Shorten","tone":"Tone","tone-direct":"Direct","tone-empathetic":"Empathetic","tone-friendly":"Friendly","tone-professional":"Professional","translate":"Translate"},"csat":{"feedback-label":"Feedback","no-ratings":"No ratings yet","public":{"feedback-error":"Couldn't send your answers. Please try again.","feedback-label":"Anything you'd like to share?","feedback-label-optional":"Optional","feedback-placeholder-negative":"What could we have done better?","feedback-placeholder-neutral":"Tell us more about your experience.","feedback-placeholder-positive":"Glad it went well. What worked best?","feedback-saved":"Feedback sent","feedback-saving":"Saving","feedback-submit":"Send feedback","heading-initial":"How was your chat with {workspaceName}?","heading-rated":"Thanks for rating us","invalid-body":"It may have expired or been replaced. You can safely close this page.","invalid-title":"This rating link isn't valid","loading":"Loading","powered-by":"Powered by","rated-subtitle":"Want to add a quick note? It goes straight to the team.","required-fields-hint":"Fields marked with * are required.","tap-to-rate":"Tap a face to rate"},"rated-by":"Rated {score}/5","rating":{"dissatisfied":"Dissatisfied","neutral":"Neutral","option-aria":"Rating {score} of {count}","satisfied":"Satisfied","very-dissatisfied":"Very dissatisfied","very-satisfied":"Very satisfied"},"title":"Customer Satisfaction"},"delete-company":{"dialog":{"confirm":"Delete company","description":"The company and its domains are removed. Contacts stay, unassigned.","title":"Delete {name}?","type-prompt":"Type {name} to confirm."}},"delete-customer":{"dialog":{"cancel":"Cancel","confirm":"Delete forever","description":"This hides the customer and removes their threads. This cannot be undone.","title":"Delete {name}?","type-prompt":"Type {name} to confirm:"}},"dictation":{"clean-up":"Clean up my words","discard":"Discard","done":"Done","undo":"Undo","undo-cleanup":"Undo cleanup"},"docs":{"public":{"copied":"Copied","copy-as-markdown":"Copy as Markdown","copy-page":"Copy page","copy-page-options":"More copy options","empty":"No documents published yet.","feedback":{"comment-label":"Tell us more (optional)","comment-placeholder-negative":"What was missing or unclear?","comment-placeholder-positive":"What worked well on this page?","error":"Something went wrong. Please try again.","no":"No","question":"Was this helpful?","submit":"Send feedback","submitting":"Sending","thanks-negative":"We'll use this to make the page better.","thanks-positive":"Glad this page helped.","thanks-title":"Thanks for the feedback","yes":"Yes"},"general":"General","get-started":"Get started","hero-title":"Gruvi Docs","home-subtitle":"Guides to install, configure, and get the most out of Gruvi.","home-title":"Documentation","last-updated":"Last updated {date}","on-this-page":"On this page","open-in-chatgpt":"Open in ChatGPT","open-in-claude":"Open in Claude","open-workspace":"Go to workspace","powered-by":"Powered by","untitled":"Untitled","view-as-markdown":"View as Markdown"},"title":"Docs"},"errors":{"generic":{"body":"Something got in the way. Try that again, or head back home.","eyebrow":"Unexpected","tab-title":"Error","title":"That didn't go to plan."},"not-found":{"body":"This page doesn't exist, or it moved, or it never did. Let's get you back to familiar ground.","eyebrow":"Off the map","tab-title":"Page not found","title":"You found the edge."},"server":{"body":"Something broke on our side. We're on it. Try again in a moment.","eyebrow":"Signal lost","tab-title":"Something broke","title":"We dropped this one."},"take-me-home":"Take me home"},"feature-wall":{"author":{"team":"Gruvi team","team-badge":"Team","unknown":"Unknown"},"category":{"ai-agents":"AI agents","analytics":"Analytics","billing":"Billing","customers":"Customers","inbox":"Inbox","integrations":"Integrations","knowledge-base":"Knowledge base","mobile":"Mobile","other":"Other"},"comment":{"placeholder":"Add a comment","post":"Post"},"detail":{"aria-description":"Full feature request details and comments.","comments":"Comments","declined-label":"Why we declined this","journey":"Status journey","no-comments":"No comments yet."},"empty":{"body":"Be the first to suggest something. The requests with the most votes get built.","title":"No feature requests yet"},"filter":{"all-categories":"All categories","all-statuses":"All statuses","category-label":"Category","clear-all":"Clear all","label":"Filter","mine":"My requests","remove":"Remove {name}","status-label":"Status","voted":"Voted"},"load-more":"Load more","loading":"Loading","search-placeholder":"Search features","sort":{"new":"New","top":"Top","trending":"Trending"},"status":{"declined":"Declined","in-progress":"In progress","merged":"Merged","open":"Open","planned":"Planned","shipped":"Shipped","under-review":"Under review"},"submit":{"action":"Submit","body-label":"Details","body-placeholder":"Describe the problem and what you'd like to see.","cancel":"Cancel","category-label":"Category","category-placeholder":"Pick a category","error-generic":"Something went wrong. Please try again.","error-rate-limit":"You've reached the daily limit for new requests. Please try again tomorrow.","similar":"Similar requests already exist","subtitle":"Tell us what would make Gruvi better. The most-voted requests get built.","title":"Request a feature","title-label":"Title","title-placeholder":"A short, clear summary"},"subtitle":"Request features, vote on what matters, and watch it ship.","title":"Feature Wall","vote":{"action":"Upvote","label":"Upvote, {count} so far","voted":"Voted"}},"generation-error":{"body-resend":"Nothing was lost. Send your answer again.","body-retry":"Nothing was lost. Try again and {name} picks up where you left off.","retry":"Try again","retrying":"Trying again","title":"{name} couldn't finish that."},"guided-flow":{"complete":"Complete","taking-longer":"This is taking longer than usual. Still working.","wizard-title":"Gruvi Wizard"},"inbox":{"advanced-filters":{"agent":{"label":"Agent","search":"Search agents..."},"assignee":{"label":"Assignee","search":"Search teammates..."},"channel":{"label":"Channel"},"group-by-group-chat":"Group by group chat","group-by-tracker":"Group by tracker","hide-tracker-linked":"Hide threads in a tracker","labels":{"label":"Labels","search":"Search labels..."},"status":{"label":"Status"},"toggle":"Filters"},"autopilot":{"mark-label":"{agent}, on autopilot"},"channel":{"chat":"Live Chat","email":"Email","telegram":"Telegram","whatsapp":"WhatsApp"},"empty-state":{"at-risk":{"description":"Nothing here is overdue or close to its deadline.","title":"No threads at risk"},"autopilot":{"description":"Threads your AI agent is handling appear here until it hands one back.","title":"Nothing on autopilot right now"},"default":{"title":"It's empty round here!\nYou don't have any threads yet or you filtered them all out."},"filtered":{"description":"Try adjusting your filters.","title":"No matching threads"},"mentions":{"description":"Threads where you're mentioned will appear here.","title":"No one has mentioned you yet"},"my-threads":{"description":"Pick some up from Unassigned.","title":"No threads assigned to you"},"spam":{"description":"Threads marked as spam will appear here.","title":"No spam threads"},"unanswered":{"description":"A thread lands here when the customer writes and your AI agent has not answered yet.","title":"Nothing is unanswered"},"unassigned":{"description":"Nice work.","title":"All threads are assigned"},"unhappy":{"description":"Threads where the customer's tone turns negative sit here.","title":"No one sounds unhappy"},"unread":{"description":"Threads with new customer messages will appear here.","title":"You're all caught up"},"waiting-on-customer":{"description":"Threads your AI agent has answered sit here until the customer replies.","title":"Nothing is with the customer"}},"empty":{"description":"Choose a thread from the inbox to view messages and start helping your customers.","title":"🪄 This is where the magic happens!"},"filter-chips":{"active":"Open & Pending","resolved":"Resolved","snoozed":"Snoozed","spam":"Spam"},"queue":{"autopilot":"Autopilot","autopilot-off":"When AI autopilot is enabled, you will see the threads being handled by AI here.","inbox":"Inbox","label":"Queue"},"quick-views":{"at-risk":"Running late","involved":"Threads I'm in","mentions":"Mentions","my-teams":"My Teams","my-threads":"My Threads","spam":"Spam","unanswered":"Unanswered","unassigned":"Unassigned","unhappy":"Unhappy","unread":"Unread","waiting-on-customer":"Waiting on customer"},"search":"Search threads...","search-close":"Close search","search-results":{"failed":"Search failed. Please try again.","incomplete":"Search is incomplete. Try a more specific search.","no-results":"No threads match your search","status":{"closed":"Closed","open":"Open","pending":"Pending","resolved":"Resolved","snoozed":"Snoozed","spam":"Spam"}},"thread":{"approval-needed":"Approval needed","assigned-to":"Assigned to {name}","compose-drafting":"Drafting a reply...","compose-question":"Needs your reply","compose-ready":"Draft ready to review","copied":"Copied","handed-over":"{name} handed this over to the team","handed-over-reason":"{name} handed this over to the team: {reason}","copy-link":"Copy link","link-copied":"Link copied","not-found":{"description":"This thread may have been deleted, or it never existed.","title":"Thread {identifier} not found"},"part-of-tracker":"Part of {tracker}","sentiment-negative":"This customer sounds upset in their recent messages","team-assigned-to":"{team} · {name}","team-open":"{team} · nobody yet","tracker-affected":"{count} affected","tracker-affected-open":"{total} linked · {open} open"},"thread-list":{"loading":"Loading threads"},"tracker":{"collapse":"Collapse linked threads","expand":"Expand linked threads","loading-members":"Loading linked threads","no-members":"No linked threads yet","view-all":"View all {count} in tracker"}},"insights":{"ai":{"backfill-note":"Resolution attribution is recorded since {date}. Earlier threads use a best-effort backfill from the last responder.","coverage":"AI coverage","coverage-definition":"Share of threads resolved in the window where the AI sent at least one customer-facing reply.","escalations":"Escalations","hero-title":"Who resolved what, honestly","no-reason":"No recorded reason","outcomes-description":"Daily resolution split, the trend view of the bar above","outcomes-title":"AI outcomes over time","reasons-description":"no escalations by recorded reason | {count} escalation by recorded reason | {count} escalations by recorded reason","reasons-empty":"No escalations in this window yet","reasons-title":"Why the AI escalated","reopen-rate":"Reopen rate on AI resolutions","reopen-rate-definition":"Threads the AI resolved that the customer reopened. Subtracts from whoever claimed the resolution.","reopen-rate-hint":"no threads came back | {count} thread came back | {count} threads came back","table-outcome":"Outcome","table-resolved":"Resolved","table-thread":"Thread","table-topic":"Topic","threads-empty":"No AI-touched threads in this window yet","threads-title":"AI-touched threads"},"chips":{"assumed":"Assumed","assumed-inactive":"Assumed inactive","auto":"Auto","confirmed":"Confirmed","customer-confirmed":"Customer confirmed","escalated":"Escalated","human":"Team","legacy":"Legacy","procedure-completed":"Procedure completed","reopened":"Reopened","system":"System"},"description":"How support is performing, and the honest version of who resolved what","drilldown":{"ai-reopened":"Reopened after AI resolution","ai-touched":"AI-touched threads","assumed":"Assumed resolved","assumed-inactive":"Assumed inactive resolutions","auto":"Auto-closed","confirmed":"Confirmed by customer","customer-confirmed":"Customer-confirmed resolutions","empty":"No threads match this view","escalated":"Escalated to the team","human":"Resolved by team","legacy":"Legacy resolutions","new":"New threads","next":"Next","previous":"Previous","procedure-completed":"Procedure-completed resolutions","range":"{from}-{to} of {total}","reopened":"Reopened after resolution","resolved":"Resolved in window","system":"System resolutions","threads-count":"no threads | {count} thread | {count} threads","topic":"Topic: {name}","window-hint":"last {days} days"},"exports":{"channels":{"all":"All channels","no-results":"No channels match","search-placeholder":"Search channels","selected":"{count} channel | {count} channels"},"coming-soon":"Coming soon","connectors":{"bigquery-looker":{"title":"BigQuery + Looker"},"google-sheets":{"title":"Google Sheets"},"hubspot":{"title":"HubSpot"},"shopify":{"title":"Shopify"}},"create":{"already-running":"An export is already running for this workspace. Wait for it to finish, then try again.","channels":"Channels","failed":"Could not start the export. Try again.","format":"Format","window":"Window"},"datasets":{"csat":{"title":"CSAT ratings"},"threads":{"description":"One row per thread: channel, topic, timestamps, resolution outcome, CSAT, escalation, reopens","title":"Threads with outcomes"},"transcripts":{"title":"Message transcripts"}},"description":"Raw exports of workspace data. Files expire after 7 days, downloads are private links.","download-failed":"Could not get a download link. Try again.","errors":{"cancelled":"Cancelled","email-delivery-failed":"Email delivery failed","internal":"Something went wrong","row-limit-exceeded":"Row limit exceeded","timed-out":"Timed out","webhook-delivery-failed":"Webhook delivery failed"},"formats":{"csv":"CSV","xlsx":"XLSX"},"getting-started":{"action":"Start an export","hint":"A guided flow walks you through every step.","step-1-description":"Start with threads and their resolution outcomes. More datasets are coming.","step-1-title":"Pick a dataset","step-2-description":"A time window and the channels you care about.","step-2-title":"Choose the scope","step-3-description":"Get the file once, or deliver it on a schedule to email or a signed webhook.","step-3-title":"Download or schedule","title":"It's easy to export your data."},"new-export":"New export","page-title":"Exports","schedules":{"active":"Active","delete":"Delete","delete-cancel":"Cancel","delete-confirm":"Delete schedule","delete-description":"Future runs stop immediately. Files from past runs are kept until they expire.","delete-failed":"Could not delete the schedule. Try again.","delete-title":"Delete this schedule?","email-to":"email to","every-day":"every day (UTC)","every-weekday":"every {weekday} (UTC)","last-run":"last run {date}","last-run-failed":"last run failed","name-daily":"Daily export","name-weekly":"Weekly export","pause":"Pause","paused":"Paused","resume":"Resume","signed":"signed","update-failed":"Could not update the schedule. Try again.","webhook-to":"webhook"},"secret":{"confirm":"I stored the secret","copied":"Copied","copy":"Copy","description":"Use it to verify the X-Gruvi-Signature header (HMAC-SHA256 of the body) on every delivery.","title":"Store your signing secret","warning":"This secret is shown only once and cannot be retrieved later. To replace it, delete the schedule and create it again."},"sections":{"connectors":"More destinations coming","runs":"Export runs","schedules":"Scheduled exports"},"status":{"complete":"Complete","expired":"Expired","failed":"Failed","queued":"Queued","running":"Running"},"table":{"cancel":"Cancel","cancel-failed":"Could not cancel the export. It may have started already.","created":"Created","dataset":"Dataset","download":"Download","empty":"No exports yet. Start one with New export.","expires-in":"expires today | expires in {count} day | expires in {count} days","file-removed":"file removed","format":"Format","requested-by":"Requested by","retry":"Retry","rows":"Rows","scheduled":"Scheduled","started-ago":"started {time}","status":"Status","window":"Window"},"weekdays":{"friday":"Friday","monday":"Monday","saturday":"Saturday","sunday":"Sunday","thursday":"Thursday","tuesday":"Tuesday","wednesday":"Wednesday"},"window":{"last-days":"Last {days} days","range":"{start} to {end}"},"wizard":{"cadence":"How often","cadence-hint":"Runs are delivered during the first hourly sweep of the day (UTC).","create-schedule":"Create schedule","data-description":"Pick the dataset to export.","data-title":"What do you want to export?","delivery-description":"Download the file once, or deliver it on a schedule.","delivery-title":"Where should it go?","done":"Done","done-export-description":"You will get a notification when the file is ready. It shows up under Export runs on this page.","done-export-title":"Export started","done-schedule-description":"Runs are delivered automatically, and every run also appears on this page.","done-schedule-title":"Schedule created","download-note":"The export starts right away. You will get a notification when the file is ready, and the download stays available for 7 days.","download":{"description":"Runs now, download from this page","title":"Download once"},"email":{"description":"Send a download link to up to 10 recipients","title":"Email"},"recipients":"Recipients","recipients-hint":"Up to 10 recipients","recipients-placeholder":"Add an email and press Enter","remove-recipient":"Remove recipient","schedule-failed":"Could not create the schedule. Try again.","scope-description":"Limit the export to a time window and channels.","scope-title":"Which conversations?","signed":"Signed","signed-tooltip":"Every delivery is a POST signed with an X-Gruvi-Signature header (HMAC-SHA256 of the body). The signing secret is shown once at creation. Payloads carry a download link, not the file.","start-export":"Start export","steps":{"data":"Data","delivery":"Delivery","done":"Done","scope":"Scope","secret":"Signing secret"},"title":"Export your data","url":"Endpoint URL","url-hint":"Must be an https URL. Deliveries are signed with an X-Gruvi-Signature header.","url-placeholder":"https://example.com/hooks/gruvi","url-rejected":"This URL was rejected. Use a public https endpoint.","webhook":{"description":"POST a signed payload to any endpoint. Works with Zapier and Make.","title":"Webhook"}}},"filters":{"all-channels":"All channels","export-failed":"The export could not be prepared. Try again.","export-view":"Export view"},"outcomes":{"assumed":"Assumed resolved","assumed-definition":"Resolved by the AI agent, no customer confirmation, not reopened","assumed-hint":"AI resolved, no confirmation","assumed-inactive-definition":"The AI answered, waited through the configured inactivity period, and closed the conversation without claiming customer confirmation.","assumed-inactive-hint":"Closed after customer inactivity","auto":"Auto-closed","auto-definition":"Closed by the system (timeout/auto-close), counted separately, never as AI success","auto-hint":"system timeouts, never AI success","confirmed":"Confirmed by customer","confirmed-definition":"Resolved by the AI agent AND the customer rated the resolution (any score)","confirmed-hint":"AI resolved, customer rated it","customer-confirmed-definition":"The customer clearly closed the conversation and the AI lifecycle checks accepted the closure.","customer-confirmed-hint":"Customer explicitly closed the loop","escalated":"Escalated","escalated-definition":"AI handed off to a human (with reason + source breakdown)","human":"Resolved by team","human-definition":"Resolved by a teammate (split: after AI escalation vs direct)","human-hint":"{escalated} after escalation, {direct} direct","human-v2-definition":"A teammate resolved the conversation.","human-v2-hint":"Resolved by the support team","legacy-definition":"The historical resolution cannot be attributed precisely under the current lifecycle model.","legacy-hint":"Historical or ambiguous attribution","procedure-completed-definition":"A terminal write procedure completed every identified customer goal.","procedure-completed-hint":"Completed by a verified procedure","reopened":"Reopened","reopened-definition":"Was resolved, customer came back; subtracts from whoever claimed the resolution","reopened-hint":"came back after being resolved","reopened-v2-definition":"The conversation was resolved and later reopened. Reopening takes precedence over the previous resolution kind.","reopened-v2-hint":"Customer returned after resolution","system-definition":"A non-AI system transition resolved the conversation.","system-hint":"Resolved by a system workflow"},"overview":{"channels-description":"Resolved threads by channel","channels-empty":"No resolved threads in this window yet","channels-title":"Channels","gaps-description":"Questions your AI could not answer well, ranked by impact","gaps-review":"Review","gaps-title":"No open knowledge gaps | {count} open knowledge gap | {count} open knowledge gaps","legend-new":"New","legend-resolved":"Resolved","no-channel":"No channel","outcomes-description":"Who actually resolved the {count} threads in this window","outcomes-title":"Resolution outcomes","team-agent":"Agent","team-csat":"CSAT","team-description":"Human agents in this window","team-empty":"No teammate resolutions in this window yet","team-first-response":"Median first response","team-resolved":"Resolved","team-title":"Team","volume-description":"New vs resolved, daily","volume-title":"Volume over time"},"placeholder":{"ai-description":"The honest resolution split, coverage, and escalation reasons will live here.","ai-title":"AI performance","exports-description":"Raw data exports, schedules, and connectors will live here.","exports-title":"Exports","topics-description":"Volume, trends, and outcomes per conversation topic will live here.","topics-title":"Topics"},"quality":{"categories":{"assumed-resolution-reopened":"Assumed resolution reopened","high-latency":"High latency","lifecycle-misroute":"Lifecycle misroute","missed-handoff":"Missed handoff","poor-closure":"Poor closure","procedure-tool-failure":"Procedure or tool failure","repeated-question":"Repeated question","retrieval-miss":"Retrieval miss","unnecessary-handoff":"Unnecessary handoff","unsupported-claim":"Unsupported claim","verification-failure":"Verification failure"},"empty-description":"Reports appear after Chatter has enough real support activity to measure.","empty-title":"No quality reports yet","figures":{"assessment-failures":"Failed assessments","assessment-failures-definition":"Resolution assessments where at least one quality dimension failed.","p95-latency":"P95 reply latency","p95-latency-definition":"The 95th percentile duration of completed Chatter reply operations in this report window.","reply-failures":"Reply failures","reply-failures-definition":"Chatter reply operations that ended with an error in this report window.","threads":"Threads reviewed","threads-definition":"Distinct real support threads with a Chatter reply operation in the report window."},"generated":"Generated {date}","not-available":"Not available","patterns-description":"Bounded diagnoses grouped from structured signals and eligible conversation samples","patterns-empty":"No recurring pattern was confirmed for this report.","patterns-title":"AI-reviewed patterns","severity":{"high":"High","low":"Low","medium":"Medium"},"signals-description":"Observed failures and risk indicators in this reporting window","signals-empty":"No quality signals were detected in this window.","signals-title":"Quality signals","snapshot-description":"Deterministic counts from real support conversations only","snapshot-title":"Production snapshot","status":{"completed":"Completed","failed":"Failed","pending":"Pending","running":"Running"},"thread-count":"{count} thread | {count} threads","title":"AI quality","window":"{from} to {to}"},"resolution":{"assessment-coverage":"Assessment coverage","assessment-coverage-definition":"Share of AI resolutions with a durable quality assessment record.","assessment-coverage-hint":"{assessed} of {total} AI resolutions","assumed-reopen-rate":"Assumed resolution reopen rate","assumed-reopen-rate-definition":"Share of inactivity-based resolutions followed by a customer reopening the conversation.","assumed-reopen-rate-hint":"{reopened} reopened out of {total} assumed resolutions","backfill-note":"Resolution attribution is recorded since {date}. Earlier threads use a best-effort backfill from the last responder.","coverage":"AI coverage","coverage-definition":"Share of threads resolved in the window where the AI sent at least one customer-facing reply.","coverage-hint":"{covered} of {total} threads","daily-description":"The trend view of the bar above, per day","daily-title":"Daily outcomes","escalations":"Escalations","escalations-hint":"{pct} of resolved threads","ledger-description":"Coverage, comebacks and handoffs in this window","ledger-title":"How the AI held up","meta":"{from} – {to} · {count} resolved","no-reason":"No recorded reason","quality-errors":"Assessment errors","quality-errors-definition":"Assessments that ended because the evaluator or its infrastructure failed.","quality-failed":"Quality failures","quality-failed-definition":"Completed assessments where at least one quality dimension failed.","quality-inconclusive":"Inconclusive assessments","quality-inconclusive-definition":"Completed assessments where the bounded evidence could not support every judgment.","quality-invalidated":"Verified, then reopened","quality-invalidated-definition":"Assessments originally verified whose conversation later reopened.","quality-pending":"Assessments pending","quality-pending-definition":"Resolution assessments waiting for evaluation.","reasons-description":"no escalations by recorded reason | {count} escalation by recorded reason | {count} escalations by<truncated omitted_approx_tokens=","reasons-empty":"No escalations in this window yet","reasons-title":"Why the AI escalated","reopen-rate":"Reopen rate on AI resolutions","reopen-rate-definition":"Threads the AI resolved that the customer reopened. Subtracts from whoever claimed the resolution.","reopen-rate-hint":"no threads came back | {count} thread came back | {count} threads came back","required-input-abandonment":"Required input abandonment","required-input-abandonment-definition":"Share of ended required-input waits that expired without the customer information needed to continue.","required-input-abandonment-hint":"{abandoned} abandoned out of {total} ended waits","title":"Who resolved what","verified-quality":"Verified quality rate","verified-quality-definition":"Share of completed quality judgments that passed relevance, accuracy, safety, and completeness and were not later invalidated by reopening.","verified-quality-hint":"{verified} verified, {failed} failed, {inconclusive} inconclusive"},"sections":{"quality":"Quality","resolution":"Resolution","team":"Team","topics":"Topics","volume":"Volume & speed"},"sla":{"breakdown":{"by-channel":"By channel","by-priority":"By priority","header":{"applied":"Applied","attainment":"Attainment","fixed":"Fixed","hit":"Hit","missed":"Missed","segment":"Segment"},"subtitle":"Low priority carries no target, so it never appears here. Attainment is hit divided by applied.","title":"First response, by priority and channel"},"chart":{"aria":"Line chart of missed targets per week for three metrics over {weeks} weeks","subtitle":"Missed targets by metric, {weeks} weeks.","title":"Breaches per week"},"delta-points":"{value} pts","empty":"No response time targets applied in this window yet.","footnote-fixed":"Fixed means a target breached, then a recalculation cleared it. When a thread is downgraded or a policy change moves its deadline, a breach that only existed under the old target is un-breached. Those count as met, because the deadline that breached no longer applies. The count is shown so the hit rate stays honest and never quietly absorbs a breach.","split":{"ai":"{name}, grounded reply","footnote":"Only grounded replies count as the AI agent's first response, the same rule the target uses. A canned acknowledgment does not. This split reads the groundedness recorded on each sent reply, so it is a real signal, not an estimate.","human":"A person","subtitle":"First response, last {weeks} weeks","title":"Who answered first"},"subtitle":"Target attainment for the last {weeks} weeks.","tile":{"hit":"Hit {count}","missed":"Missed {count}","of":"of {total}"},"title":"Response times"},"split":{"empty":"No threads were resolved in this window yet"},"tabs":{"ai":"AI performance","exports":"Exports","overview":"Overview","topics":"Topics"},"team":{"agent":"Agent","csat":"CSAT","empty":"No teammate resolutions in this window yet","first-response":"Median first response","meta":"no agents active in window | {count} agent active in window | {count} agents active in window","resolved":"Resolved","title":"Team"},"tiles":{"csat":"CSAT","csat-definition":"Average customer rating, normalized across rating scales. The survey response rate is always shown next to it, never hidden.","csat-hint":"{pct} survey response rate","escalation-rate":"Escalation rate","escalation-rate-definition":"Share of resolved threads the AI handed to a human, with a recorded reason.","escalation-rate-hint":"{count} threads handed off","first-response":"Median first response","first-response-definition":"Median time from thread creation to the first reply by an AI agent or teammate, from the recorded first-response timestamp.","first-response-hint":"humans only: {duration}","new":"New threads","new-definition":"Support threads created in the selected window, all channels unless filtered. Counts threads, not messages.","open-now":"Open right now","open-now-definition":"Threads currently in an open status. A live number, not bound to the window.","open-now-hint":"oldest waiting {duration}","resolution-time":"Median resolution time","resolution-time-definition":"Median time from thread creation to resolution, over threads resolved in the window.","resolution-time-hint":"p90: {duration}","resolved":"Resolved in window","resolved-definition":"Threads whose status moved to resolved inside the window, regardless of when they were created. Click to see every one.","resolved-hint":"{pct} of new volume","trend-down":"down {pct} vs the previous {days} days","trend-up":"up {pct} vs the previous {days} days"},"title":"Insights","topics":{"all-title":"All topics","empty":"No classified topics in this window yet","gaps-description":"Questions your AI could not answer well, ranked by impact","gaps-review":"Review","gaps-title":"No open knowledge gaps | {count} open knowledge gap | {count} open knowledge gaps","meta":"no topics · AI-classified | {count} topic · AI-classified | {count} topics · AI-classified","table-csat":"CSAT","table-escalation":"Escalation","table-sentiment":"Sentiment","table-split":"AI resolution split","table-threads":"Threads","table-topic":"Topic","table-trend":"Trend","title":"Topics","top-description":"AI-classified from customer messages","top-empty":"No classified topics in this window yet","top-title":"Top topics by volume"},"volume":{"channels-description":"Resolved threads by channel","channels-empty":"No resolved threads in this window yet","channels-title":"Channels","csat":"CSAT","csat-definition":"Average customer rating, normalized across rating scales. The survey response rate is always shown next to it, never hidden.","csat-hint":"{pct} survey response rate","first-response":"Median first response","first-response-definition":"Median time from thread creation to the first reply by an AI agent or teammate, from the recorded first-response timestamp.","first-response-hint":"humans only: {duration}","legend-new":"New","legend-resolved":"Resolved","meta":"{from} – {to} · {channel}","new":"New threads","new-definition":"Support threads created in the selected window, all channels unless filtered. Counts threads, not messages.","no-channel":"No channel","open-now":"Open right now","open-now-definition":"Threads currently in an open status. A live number, not bound to the window.","open-now-hint":"oldest waiting {duration}","resolution-time":"Median resolution","resolution-time-definition":"Median time from thread creation to resolution, over threads resolved in the window.","resolution-time-hint":"p90: {duration}","resolved":"Resolved","resolved-definition":"Threads whose status moved to resolved inside the window, regardless of when they were created. Click to see every one.","resolved-hint":"{pct} of new volume","speed-description":"Over threads resolved in this window","speed-title":"Speed & satisfaction","title":"Volume & speed","trend-down":"down {pct} vs the previous {days} days","trend-up":"up {pct} vs the previous {days} days","volume-description":"New vs resolved, daily","volume-title":"Volume over time"},"window":{"30d":"30d","7d":"7d","90d":"90d"}},"insights-dashboard":{"ai":{"ai-assisted":"AI assisted","ai-resolved":"AI resolved","class-count-plural":"{count} thread in this period | {count} threads in this period","click-hint":"Click to view threads","col-day":"Day","col-week":"Week","column-aria":"{label}: {resolved} AI resolved, {assisted} AI assisted, {manual} without AI","cta":"Meet your AI agent","empty-sub":"When Gruvi AI starts replying, you'll see how many threads it resolves on its own, day by day, next to your team's work.","empty-title":"The AI hasn't joined any threads yet","explainer":"How much of the load the AI carries: resolved on its own, helped a teammate, or stayed out of the way.","granularity-day":"Day","granularity-week":"Week","hide-table":"Hide table","no-ai":"No AI","story":"{aiShare} of threads had AI involved in the reply. AI fully resolved {fullShare} on its own; the rest were handled by the team.","title":"AI performance","tooltip-title-plural":"{label} · {count} thread | {label} · {count} threads","total":"Total","view-table":"View as table","week-of":"Wk of {date}"},"channel":{"all":"All","label":"Channel"},"drilldown":{"empty":"No threads match this view.","title":"Threads"},"error":{"retry":"Try again","sub":"The numbers for this section didn't come through. Nothing is lost, retry to load them.","title":"Couldn't load this section"},"frustrations":{"ai-summary":"AI summary of recent negative customer messages","awaiting-sub":"Gruvi has not read these threads yet.","awaiting-title":"Not sorted yet","empty-sub":"When a customer's tone turns negative, the moment shows up here with the threads behind it, so you find out before the rating does.","empty-title":"Nothing flagged. That's a good sign","explainer":"Flagged automatically when a customer's tone turns negative or they complain explicitly. The rule is fixed, never a black box.","story":"{themes} flagged this period, {threads} threads in total. Every row opens its threads.","theme-count-plural":"{count} theme | {count} themes","thread-count-plural":"{count} thread | {count} threads","title":"Common frustrations","ungrouped-sub":"Flagged, but not sorted into a topic yet. This takes a few minutes.","ungrouped-title":"Not grouped yet","unthemed-sub":"These threads have nothing in common.","unthemed-title":"No shared theme found"},"headlines":{"csat":"Customer satisfaction","cta":"Connect a channel","empty-sub":"As soon as the first thread arrives, reply speed, resolution time and customer satisfaction appear here, live. Nothing to set up.","empty-title":"Your first numbers land with your first thread","explainer":"The three numbers that tell you how support is doing, with change vs the previous period.","faster":"faster","first-period":"First period with data","first-response":"Average first response","low-sample":"Low sample","no-change":"No change","no-ratings":"no ratings yet","no-ratings-sub":"Appears when customers rate threads after resolution.","no-ratings-title":"No ratings yet","no-replies-sub":"Appears after the first agent or AI reply in this period.","no-replies-title":"No replies yet","no-resolutions-sub":"Appears once a thread is resolved in this period.","no-resolutions-title":"No resolutions yet","out-of-five":"/ 5","rating-hint":"{rate} of resolved threads that asked for a rating got one. Each star row opens its threads.","rating-hint-no-rate":"Each star row opens the rated threads from this period.","rating-settings":"Rating settings","ratings-count-plural":"{count} rating | {count} ratings","resolution":"Average resolution time","slower":"slower","star-threads":"{stars} star threads","star-value":"{value}-star satisfaction","story":"First replies land in {firstResponse} on average, with {csat}.","title":"Headlines","vs-previous":"vs previous period","vs-previous-value":"{value} vs previous period"},"kudos":{"cta":"Turn on ratings","empty-period-sub":"No five-star rating with a comment in these dates. Try a wider date range.","empty-period-title":"No kudos in this period","empty-sub":"Five-star ratings with a comment land here, in the customer's own words. The first one always feels great.","empty-title":"No kudos yet","explainer":"Real customer words from 5-star ratings, with the teammate who earned them.","story":"{count} kudos this period.","title":"Kudos","view-all-rated":"View all rated threads","view-thread":"View thread #{number}"},"range":{"30d":"Last 30 days","7d":"Last 7 days","90d":"Last 90 days","apply":"Apply","custom":"Custom range","from":"From date","last-month":"Last month","this-month":"Month to date","to":"To date","today":"Today"},"scope":{"everyone":"Everyone","for":"For","teammates":"Teammates","teams":"Teams"},"status":{"closed":"Closed","empty-sub":"Try a wider date range, or check that your channels are connected. Every thread that arrives shows up here by status.","empty-title":"No threads in this period","explainer":"Where every thread from this period stands right now. Each row opens its threads.","footnote":"Also in this period: {closed} closed without a reply needed, {spam} marked spam.","open":"Open","open-threads":"Open threads","resolved":"Resolved","resolved-threads":"Resolved threads","snoozed":"Snoozed","snoozed-threads":"Snoozed threads","spam":"Spam","story":"{total} were active in this period. Most are already resolved; {open} are still open right now.","thread-count-plural":"{count} thread | {count} threads","title":"Threads by status","waiting":"Waiting on customer","waiting-threads":"Waiting threads"},"steps":{"advanced":"Advanced","exports":"Exports","overview":"Overview"},"topics":{"empty-sub":"Incoming threads are read and grouped by what customers ask about. This catches up within minutes of the first messages.","empty-title":"Topics appear after your first threads","explainer":"What customers write about, grouped and ranked automatically. No setup needed.","story":"Customers write about these themes most. Every row opens its threads.","thread-count-plural":"{count} thread | {count} threads","title":"Common topics","trend-new":"New"}},"invites":{"already-member":{"description":"You’re already a member of {workspaceName}.","open-workspace":"Open Workspace","title":"You’re Already a Member"},"confirm":{"accept":"Accept Invitation","accepting":"Joining...","decline":"Decline","declining":"Declining...","description":"{inviterName} has invited you to join as {roleLabel}.","invited-by":"Invited by","role":"Your Role","title":"Join {workspaceName}","workspace":"Workspace"},"email-mismatch":{"alert":"Please sign in with the correct email address to accept this invitation.","cancel":"Cancel","description":"This invitation was sent to {inviteEmail}, but you’re signed in as {userEmail}.","switch-account":"Switch Account","title":"Email Mismatch"},"error":{"description":"This invitation link is invalid or has been removed.","go-home":"Go to Home","title":"Invalid Invitation"},"invalid":{"description-accepted":"This invitation has already been accepted.","description-declined":"This invitation was previously declined.","description-default":"This invitation is no longer valid.","description-expired":"This invitation has expired. Please request a new one from the workspace admin.","description-revoked":"This invitation has been revoked by the workspace admin.","go-home":"Go to Home","open-workspace":"Open Workspace","request-new":"Request a New Invite","title-accepted":"Already Accepted","title-declined":"Invitation Declined","title-default":"Invalid Invitation","title-expired":"Invitation Expired","title-revoked":"Invitation Revoked"},"loading":{"title":"Verifying invitation..."},"not-authenticated":{"alert":"Sign in with {email} to accept this invitation.","create-account":"Create an Account","description":"{inviterName} has invited you to join {workspaceName} as {roleLabel}.","sign-in":"Sign In to Continue","title":"You’re Invited!"},"profile-setup":{"continue":"Continue to Workspace","description":"You’ve joined {workspaceName}. Complete your profile to get started.","display-name-placeholder":"Display name","name-placeholder":"Full name","title":"Set Up Your Profile"},"roles":{"admin":"an Admin","member":"a Member"},"success":{"description":"You’ve successfully joined the workspace.","open-workspace":"Open Workspace","title":"Welcome to {workspaceName}!"}},"knowledge":{"add-content":{"and-more":"and more...","article":{"choose-folder":"Where should your article live?","create":"Create article","folder-hint":"Folders help you organize articles so they're easier to find and manage. You can also add one later."},"choose-method":"How would like to add knowledge?","close-confirm-confirm":"Close","close-confirm-description":"A process is in progress. Closing will not cancel it — you'll be notified when it's done. Close anyway?","close-confirm-title":"Close dialog?","folder-section":"Where should these articles go?","import-document":{"accepted-formats":"PDF, CSV, TXT, DOCX, MD","drag-drop":"Drag and drop or click to browse","notify":"We'll notify you when it's ready.","open-article":"Open article","processing":"AI is learning from your document...","success-fast":"Your article is ready!","success-slow":"Your article is being created. We'll notify you when it's done."},"import-website":{"enter-url":"Enter your website URL and we'll scan it for content to import.","found-pages":"Found {count} pages","found-summary":"Found {count} pages in {folders} folders","import":"Import","pages-selected":"{count} pages selected","review-description":"Review the structure and uncheck any pages you don't want to import.","scan":"Scan website","scanning":"Scanning {domain}...","success-description":"We're importing {count} articles into your knowledge sources. We'll notify you when it's done.","success-title":"Import started","url-placeholder":"https://example.com","view-articles":"View articles"},"integrations-coming-soon":"Integrations coming soon","method-article":"Write an article","method-article-description":"Create an article from scratch in the editor","method-document":"Upload document","method-document-description":"PDF, CSV, or other files your agent should know","method-website":"Import website","method-website-description":"Scan your site and turn pages into articles","steps":{"content":"Content","done":"Done","import":"Import","publish":"Publish","review":"Review","sync":"Sync","upload":"Upload","website":"Website"},"title":"Add knowledge source","upload":{"accepted-formats":"PDF, DOCX, XLSX, CSV, TXT. Max 50MB per file","browse":"or click to browse","choose-topic":"Where should these documents go?","drag-drop":"Drag and drop files here","error-process":"Failed to process {name}","error-upload":"Failed to upload {name}","error-url":"Failed to start upload for {name}","files-count-plural":"{count} file selected | {count} files selected","files-selected":"{count} files · {size} total","progress-count":"{uploaded} of {total} uploaded","title":"Upload your documents","upload-and-process":"Upload & process","uploading-title":"Uploading your documents"},"website":{"almost-done":"Almost done...","already-added":"This website has already been added. You can re-sync it from its settings.","blocked":{"check-description":"Add this rule to your firewall to let Gruvi in, then scan again.","check-title":"Your site is blocking Gruvi","continue-anyway":"Continue anyway","review-description":"The scan couldn't read any pages. Add this rule to your firewall to let Gruvi in, then scan again.","review-title":"Your site blocked the scan","rule-hint":"Allows only Gruvi. Nothing else changes."},"check-website":"Check website","close":"Close","continue":"Continue","description":"Scan your site and import pages as articles automatically.","enter-url":"What's your website address?","error":{"bot-challenge-blocked-description":"{domain} is protected by an anti-bot service that blocks automated scanners. If you own this website, allow Gruvi's crawler in your firewall or security settings, then scan again.","bot-challenge-blocked-retry-hint":"After allowing our crawler, scan this website again.","bot-challenge-blocked-snippet-label":"Allow GruviBot in your firewall (e.g. a Cloudflare WAF rule, action: Skip)","bot-challenge-blocked-title":"This site is blocking automated access","empty-sitemap-description":"We found a sitemap on your site but it doesn't contain any page URLs. Check that your sitemap is properly configured.","empty-sitemap-title":"Your sitemap is empty","no-pages-description":"We scanned your site but couldn't find any pages with content. Make sure your pages are publicly accessible and not behind a login.","no-pages-title":"No pages found","robots-blocked-copied":"Copied","robots-blocked-copy":"Copy","robots-blocked-description":"Your site's robots.txt file prevents us from reading your pages. You can either update your robots.txt to allow Gruvi, or add a sitemap so we can find your pages without crawling.","robots-blocked-retry-hint":"After updating robots.txt, try scanning this website again.","robots-blocked-snippet-label":"Allow these crawlers in robots.txt","robots-blocked-title":"Your website is blocking our scanner","timeout-description":"Your website didn't respond in time. This might happen with very large sites. Try again or contact support if it keeps happening.","timeout-title":"Scanning took too long","unreachable-description":"We weren't able to connect to {domain}. Check that the URL is correct and the website is publicly accessible.","unreachable-title":"Couldn't reach your website","verify-firewall-label":"Using a different firewall?","verify-regenerate":"Regenerate token","verify-regenerate-failed":"Couldn't regenerate the token. Please try again.","verify-token-failed":"Couldn't prepare your rule.","verify-token-loading":"Preparing your rule...","verify-token-retry":"Try again"},"group-homepage":"Homepage","group-other":"Other","import-count-plural":"Import {count} page | Import {count} pages","import-error":"Failed to import pages. Please try again.","learn-how":"Learn how","no-sitemap":"Auto syncs bi-weekly.","no-sitemap-body":"Your website is missing a 'sitemap'.  This is a file that helps Gruvi understand what has updated in your site. After you add it, Gruvi will sync its knowledge sources with your site every day, so users always get the freshest information. Ask your website admin to create a sitemap.","no-sitemap-description":"We'll scan your website every two weeks. Add a sitemap to unlock daily sync.","no-sitemap-subtitle":"We can only sync Gruvi knowledge sources with your website content every 2 weeks. Why?","no-sitemap-title":"Limited sync available. Your website needs AI optimization.","page-already-added":"This page is already in your knowledge.","pages-found-plural":"We found {count} page on {domain} | We found {count} pages on {domain}","pages-found-live-plural":"{count} page found | {count} pages found","pages-selected-plural":"{count} page selected | {count} pages selected","plan-limit":"Your plan can import {limit} of these pages.","plan-limit-upgrade":"Upgrade to import more","plan-limit-zero":"You've reached your plan's page limit.","remove":"Remove website","scan":"Scan website","scan-again":"Scan again","scan-error":"Failed to start scanning. Please try again.","scanning-button":"Scanning...","scanning-close-hint":"Feel free to close this. We'll notify you when it's ready.","scanning-hint":"This usually takes about a minute.","scanning-title":"Scanning {domain}...","sections-found-plural":"We found {count} page in {sections} sections on {domain} | We found {count} pages in {sections} sections on {domain}","sections-selected":"{selected} of {total} pages selected","sitemap-detected":"Live sync enabled","sitemap-detected-body":"We'll check your website for changes every day and automatically keep Gruvi's knowledge sources up to date!","sitemap-detected-description":"We'll check for changes daily and keep Gruvi's knowledge sources up to date automatically.","sitemap-detected-subtitle":"Live sync enabled.","sitemap-detected-title":"Your website is AI-compatible!","still-scanning":"Gruvi is learning from your website....","stop":"Stop scanning","title":"Import from website","truncated":"We found {total} pages but only {limit} can be imported on your current plan.","truncated-note":"This site has more than {count} pages. We included the first {count}.","try-different-url":"Try a different URL","uncheck-hint-many":"We recommend unchecking sections like {labels} so Gruvi only learns from pages that matter.","uncheck-hint-one":"We recommend unchecking the {label} section so Gruvi only learns from pages that matter.","url-hint":"We'll scan your site to find pages your agent can learn from.","url-placeholder":"yourwebsite.com"},"write-article":{"create":"Create","create-topic":"Create \"{name}\"","select-topic":"Select a folder","title-label":"Title","title-placeholder":"Article title","topic-label":"Folder"}},"add-page":{"already-added":"This page has already been added to this source.","description":"Paste a link to a page on {domain} that wasn't picked up automatically. We'll fetch it and add it to this source.","error":"We couldn't add that page. Please try again.","finish-import":"Finish the import","hint":"Must be a page on the same website.","import-started":"Page added to {domain}","import-title":"Import a page","import-unfinished":"The import of {domain} didn't finish.","import-waiting":"{domain} is still importing.","import-website":"Import the website","importing":"We're already importing this page.","invalid-url":"Enter a valid URL, including https://","label":"Page URL","open-article":"Open the article","placeholder":"https://example.com/help/hidden-page","submit":"Add page","submitting":"Checking link","title":"Add a page","website-removing":"{domain} is being removed."},"agent-access":{"agent-count":"{count} agent | {count} agents","all-agents":"All agents","description":"Choose which AI agents can use this in their answers.","done":"Done","mode":{"all":{"description":"Including agents you add later.","title":"All agents"},"specific":{"description":"Only the agents you pick below.","title":"Specific agents"}},"save-error":"Could not save agent access. Please try again.","title":"Agent access"},"ai-agent":{"disabled":"Disabled","disabled-description":"The AI agent will not use this article.","enabled":"Enabled","enabled-description":"The AI agent can use this article to answer customer questions.","toggle-label":"AI Agent"},"article-badge":{"edited":"Edited","imported":"Imported","needs-review":"Needs review","source-unavailable":"Source unavailable","synced":"Synced"},"articles":{"add-content":"Add article","archive":"Archive","archive-dialog-description":"This article will be moved to archived status and will no longer be available to the AI.","archive-dialog-title":"Archive article","auto-saved":"Saved","bulk-delete":"Delete","bulk-delete-confirm-description":"This will permanently remove the selected articles. This action cannot be undone.","bulk-delete-confirm-title-plural":"Delete {count} article? | Delete {count} articles?","bulk-deselect":"Deselect all","bulk-move":"Move to folder","bulk-move-disabled":"Website-sourced articles cannot be moved","bulk-publish":"Publish","bulk-selected":"{count} selected","bulk-unpublish":"Unpublish","clear-filters":"Clear filters","columns":{"ai":"AI","folder":"Folder","last-edited":"Last edited","source":"Source","status":"Status","title":"Title","updated":"Updated"},"create":"New article","delete":"Delete article","delete-dialog-description":"This will permanently delete this article. This action cannot be undone.","delete-dialog-title":"Delete article","edit":"Edit article","edited-at":"Edited {date}","edited-by":"Edited {date} by {name}","empty-state":"No articles yet","empty-state-description":"Write from scratch or import from a website or document.","empty-state-hint":"Articles help your AI agent answer customer questions accurately.","failed-indexing-row-plural":"{count} page failed to index | {count} pages failed to index","filter-ai-enabled":"AI enabled","filter-all":"All","filter-archived":"Archived","filter-draft":"Draft","filter-folder":"Folder","filter-needs-review":"Needs Review","filter-published":"Published","filter-source-type":"Source type","move":"Move to folder...","move-dialog-description":"Select a folder to move this article to.","move-dialog-title":"Move article","no-articles-description":"Import content from your website, upload documents, or write articles directly.","no-articles-synced-description":"Pages are added automatically when the website source syncs.","no-articles-synced-title":"No articles in this folder","no-articles-title":"No articles yet","no-results":"No articles match your filters","no-results-description":"Try adjusting your search or filters.","not-found":"Article not found","not-found-description":"This article may have been moved or deleted.","page-info":"Showing {from} to {to} of {total}","page-next":"Next","page-previous":"Previous","page-title":"Articles","publish":"Publish","restore":"Restore","retry-error":"Could not retry. Please try again.","save-failed":"Not saved","save-failed-toast":"Your latest changes could not be saved. Retry or check your connection.","save-retry":"Retry","saving":"Saving...","search-placeholder":"Search articles...","source-document":"Document","source-manual":"Manual","source-website":"Website","title":"Articles","uncategorized":"Uncategorized","unpublish":"Unpublish","unsaved-changes-conflict":"You have unsaved changes from {time}. The article has changed since, restoring will overwrite the newer version.","unsaved-changes-discard":"Discard","unsaved-changes-found":"You have unsaved changes from {time}.","unsaved-changes-restore":"Restore","untitled":"Untitled"},"common":{"back":"Back","close":"Close","done":"Done"},"content":{"all-articles":"All Articles","empty-folder":"No articles in this folder","empty-folder-description":"Drag articles here from the list, or create a new article in this folder.","new-folder-placeholder":"New folder name...","uncategorized":"Uncategorized"},"description":"Manage your knowledge sources, folders, and articles.","documents":{"add":"Upload files","columns":{"name":"Name","status":"Status","uploaded":"Uploaded"},"empty-description":"Upload PDFs, Word documents, or other files so your AI agent can learn from them.","empty-title":"No documents uploaded","footer-count":"{count} documents","remove":"Remove document","remove-description":"This will remove the document and its article. Detached articles will not be affected.","remove-title":"Remove {name}?","search-placeholder":"Search documents..."},"editor":{"ai-settings-description":"When enabled, your AI agent can reference this article when answering customer questions.","ai-settings-disabled":"Disabled","ai-settings-enabled":"Enabled","ai-settings-label":"Allow AI agent to use this article","ai-settings-title":"AI settings","back-to-kb":"Knowledge sources","blockquote":"Blockquote","bold":"Bold","bullet-list":"Bullet list","characters":"characters","code-block":"Code block","convert-to-policy":"Convert to policy","copied":"Copied!","copy-article":"Copy article","delete-body":"This will move '{title}' to trash.","delete-title":"Delete this article?","detach-confirm-action":"Edit article","detach-confirm-description":"This article will become editable and will no longer sync with the original source. This action cannot be undone.","detach-confirm-description-document":"This will unlock the article for editing.","detach-confirm-description-website":"This article is synced from {source}. Editing will detach it from the source and future re-syncs won't update this article.","detach-confirm-title":"Edit this article?","detach-from-source":"Detach from source","download-original":"Download original file","heading-2":"Heading 2","heading-3":"Heading 3","heading-4":"Heading 4","horizontal-rule":"Horizontal rule","image":"Image","image-insert":"Insert","image-upload-failed":"Image upload failed","image-uploading":"Uploading image...","image-url-fetch-failed":"Couldn't fetch this image from its URL. Try downloading and pasting the image directly.","image-url-placeholder":"Paste an image URL...","image-url-unsupported-type":"This file isn't a supported image format. Try a JPEG, PNG, GIF, WEBP, or SVG.","inline-code":"Inline code","italic":"Italic","link":"Link","link-insert":"Insert","link-url-placeholder":"Paste or type a URL...","more-actions":"More actions","ordered-list":"Ordered list","outline":{"no-headings":"No headings found","title":"Outline","toggle":"Toggle outline"},"placeholder":"Start writing...","share-article":"Share article","sources-crawled-ago":"Crawled {time}","sources-full-document":"Full document","sources-sections-used-plural":"{count} section used | {count} sections used","sources-show-all":"Show all {count} sources","sources-show-less":"Show less","sources-source-changed":"Source changed","sources-title":"Sources ({count})","sources-uploaded":"Uploaded {date}","strikethrough":"Strikethrough","table":"Table","topic-label":"Folder","unlink":"Remove link","website-settings-last-synced":"Last synced","website-settings-live-hint":"Automatically checks for updates every hour.","website-settings-never":"Never","website-settings-no-sitemap":"No sitemap found. Adding one unlocks daily sync.","website-settings-reimport":"Re-import this page","website-settings-reimporting":"Re-importing...","website-settings-rescan":"Re-scan entire website","website-settings-rescan-close-hint":"Feel free to close this. We'll notify you when it's done.","website-settings-rescan-confirm":"This will re-scan {domain} and update all synced articles. Continue?","website-settings-rescan-title":"Re-scan website?","website-settings-rescanning":"Re-scanning...","website-settings-scheduled-hint":"Scanned every two weeks for changes.","website-settings-sync-live":"Live sync enabled","website-settings-sync-mode":"Sync mode","website-settings-sync-scheduled":"Auto syncs bi-weekly.","website-settings-title":"Website settings","website-settings-url":"URL","words":"words"},"empty-state":{"coming-soon":"Coming soon","create-article":"Write an article","description":"Create folders and articles to build your knowledge sources. Your AI agent can use these to answer customer questions.","import-sources":"Import from website or files","title":"Knowledge Sources"},"failed-indexing-dialog":{"description":"These pages were imported but failed to embed. Retry to queue them for re-embedding.","empty":"No failed pages. They may already be retrying.","group-description":"These pages imported fine but couldn't be embedded for search.","group-title":"Failed to index ({count})","retry-all":"Retry all","retry-single":"Retry","title":"Failed to index"},"folder-selector":{"create":"Create","create-folder":"Create \"{name}\"","create-new":"Create new folder","hint":"Folders help you organize articles so they're easier to find and manage. You can skip this.","new-folder-placeholder":"Folder name","placeholder":"Select a folder","search":"Search folders..."},"folders":{"archive":"Archive folder","archive-dialog-description":"All articles in this folder will also be archived. You can restore the folder later.","archive-dialog-title":"Archive folder","archived-section":"Archived","article-count-plural":"{count} article | {count} articles","create":"New folder","delete":"Delete folder","delete-dialog-description":"This will permanently delete the folder and all its articles. Type the folder name to confirm.","delete-dialog-title":"Delete folder","description":"Description","description-placeholder":"Brief description of this folder...","edit":"Edit folder","empty-state":"No folders yet","empty-state-description":"Create your first folder to organize knowledge articles.","icon":"Icon","icon-picker":{"categories":{"business":"Business","communication":"Communication","creative":"Creative","data":"Data","documents":"Documents","misc":"Misc","nature":"Nature","navigation":"Navigation","objects":"Objects","people":"People","status":"Status","technical":"Technical"},"no-results":"No icons found","remove":"Remove icon","search":"Search icons..."},"name":"Folder name","name-placeholder":"e.g. Getting Started","not-found":"Folder not found","not-found-description":"This folder may have been moved or deleted.","restore":"Restore folder","title":"Folders"},"gaps":{"card":{"dismissed":"Dismissed","dismissed-permanent":"Dismissed permanently.","dismissed-snoozed":"Dismissed for 90 days. Comes back automatically if customers keep asking.","draft-created":"Draft created: {article}. Publishing it fills this gap.","draft-the-update":"Draft the update","filled":"Filled {time}","filled-by":"Filled by {article}.","filled-by-removed":"a removed article","generate-draft":"Generate draft","generating-draft-threads":"Generating a draft from {count} sample thread | Generating a draft from {count} sample threads","last-seen":"Last seen {time}","misses-since":"{count} new miss since publishing, worth another look. | {count} new misses since publishing, worth another look.","more-threads":"and {count} more thread like this | and {count} more threads like this","no-new-misses":"No new misses since the article was published.","reopen":"Reopen","review":"Review","suggested-fix":"Suggested fix","threads":"{count} thread | {count} threads","threads-before-fix":"{count} thread before the fix | {count} threads before the fix"},"demo":{"bubble":"Do you ship to Canada, and how long does it take?","card-chip":"Missing topic","card-reason":"The knowledge base has nothing that covers this yet.","card-topic":"Customers ask about international shipping","counter":"{search}, no article answered this","counter-search":"Searched the knowledge base","cta":"Generate draft","fix-label":"Suggested fix","fix-title":"Where we ship and how long it takes","honest":"Nothing above is real. It is a sample of what appears once customers start asking.","lead":"Nothing missing yet. Here is how the first gap will find you.","sample":"Sample","tile-confirm-body":"When the same question shows up in three or more threads, a draft article is one click away.","tile-confirm-title":"Three asks become a gap","tile-notice-body":"It notices when a search comes back empty, a chat is escalated, or an answer gets a thumbs down.","tile-notice-title":"Gruvi watches every thread","tile-sweep-body":"Once a day, repeated questions your knowledge base cannot answer are gathered into one case.","tile-sweep-title":"Missed questions are grouped daily"},"drawer":{"asked-title":"What customers asked","dismiss":"Dismiss","dismiss-permanent":"Dismiss permanently","dismiss-permanent-hint":"Never suggest this topic again","dismiss-snooze":"Dismiss for 90 days","dismiss-snooze-hint":"Comes back automatically if customers keep asking","draft-the-update":"Draft the update","fix-conflict":"Review the conflicting sources and keep the current one","fix-new-article":"New article in {folder}","fix-new-article-uncategorized":"New article","fix-title":"Suggested fix","fix-update-article":"Update an existing article","generate-draft":"Generate article draft","link-article":"Link existing article","open-draft":"Open draft","supersede":"Supersede the outdated article","out-of-scope-chip":"Out of scope for {count} agent | Out of scope for {count} agents","out-of-scope-note":"{count} agent that hit this gap cannot see this article, so it may keep missing it. | {count} agents that hit this gap cannot see this article, so they may keep missing it.","outcome":{"escalated":"Escalated","negative-feedback":"Negative feedback","no-answer":"No answer"},"reopen":"Reopen gap","resolution-title":"Resolution","signals":{"escalations":"{count} escalation | {count} escalations","negative-feedback":"{count} negative rating | {count} negative ratings","searches":"{count} search with no results | {count} searches with no results"},"tried-deleted":"Deleted article","tried-none":"No match","tried-partial":"Partial match","view-thread":"View thread","why-title":"Why your agent could not answer"},"early":{"description":"Topics being watched. They become gaps if customers keep asking.","meta-threads":"{count} thread, last seen {time} | {count} threads, last seen {time}","promote":"Promote","title":"Early signals"},"empty":{"dismissed-description":"Gaps you dismiss move here. You can restore one at any time.","dismissed-title":"No dismissed gaps","filled-description":"Gaps you fill with an article move here.","filled-title":"No filled gaps yet"},"errors":{"dismiss":"Could not dismiss the gap","generate":"Could not start the draft","keep-source":"Could not keep that source","link":"Could not link the article","promote":"Could not promote the topic","reopen":"Could not reopen the gap","supersede":"Could not supersede the article"},"header-description":"Questions customers keep asking that your knowledge base cannot answer yet.","home":{"description":"Questions customers keep asking that your knowledge base cannot answer yet.","open-count":"{count} open","title":"Knowledge gaps","view-all":"View all"},"link-dialog":{"back":"Back","description":"Pick the article that already answers these questions. Publishing changes are not required; the gap is marked filled right away.","error-ai-disabled":"That article is turned off for the AI agent, so it cannot fill this gap. Turn it on, or pick another article.","error-deleted":"That article was deleted. Pick another one to fill this gap.","error-generic":"Could not link that article. Pick another one and try again.","error-unpublished":"That article is not published yet, so agents cannot use it. Publish it first, or pick a published article.","link":"Link article","no-articles":"No published articles yet. Write and publish one to fill this gap.","no-articles-action":"Go to knowledge base","no-results":"No matching articles","only-published-hint":"Only published articles your AI agent can use can fill a gap. Other results are shown for reference.","out-of-scope-body":"This article is outside the knowledge scope of {count} agent that hit this gap. Linking it fills the gap here, but that agent will keep missing it. | This article is outside the knowledge scope of {count} agents that hit this gap. Linking it fills the gap here, but those agents will keep missing it.","out-of-scope-confirm":"Link anyway","out-of-scope-title":"Some agents cannot see this article","search-hint":"Search your articles by title.","search-placeholder":"Search articles","title":"Link existing article"},"list":{"conflicts-group":"Conflicting sources","empty-description":"No knowledge gaps and no conflicting sources right now. When your agent cannot answer something, or two of your sources disagree, it appears here.","empty-title":"All clear.","gaps-group":"Knowledge gaps","seen":"seen once | seen {count} times","subtitle":"Questions your agent could not answer, and articles that disagree.","threads":"{count} thread | {count} threads"},"resolve":{"asked-title":"What customers asked","conflict-label":"Conflicting sources","conflict-question-title":"The question that exposed it","conflict-sub":"Two of your sources answer the same question differently, and your agent read both in the same reply.","disagree-title":"What they disagree about","draft-ready-tile-body":"Gruvi already drafted {article}. Publish it to fill this gap.","draft-ready-tile-title":"Open the draft","draft-tile-body":"Gruvi drafts {article} from these {threads}, including how your team answered. You review it before it goes live.","draft-tile-title":"Write a new article","draft-queued":"Gruvi is writing the draft. Review it here when it is ready.","fix-title":"How to fix it","gap-label":"Knowledge gap","gap-sub":"{threads} asked this and your knowledge base has no answer.","keep-note":"The other article becomes a draft. You can edit it or publish it again later.","keep-source":"Keep this one","link-tile-body":"Pick the article that should have covered this.","link-tile-title":"Add it to an article","more-threads":"and {count} more thread, show them | and {count} more threads, show them","not-found":"This gap is not here anymore.","open-article":"Open the article","rest-threads":"The other thread asked the same thing. | The other {count} threads asked the same thing.","role-newer":"Newer","role-older":"Older","skip-conflict":"Neither, skip","skip-gap":"Not worth an article, skip","source-fallback":"Source {number}","source-updated":"updated {date}","sources-title":"The two sources","versus":"vs"},"tabs":{"dismissed":"Dismissed","filled":"Filled","open":"Open"},"title":"Gaps","type":{"conflict":"Conflicting sources","incomplete-article":"Incomplete article","missing-topic":"Missing topic"}},"home":{"add-content":"Add knowledge source","add-content-document":"Import a document","add-content-page":"Import a page","add-content-policy":"Write a policy","add-content-website":"Import a website","add-content-write":"Write an article","agent-learning":"Your agent is learning from this...","header-description":"Information that Gruvi AI agents will use to answer customers automatically. E.g. company products, policies, services.","import-website":"Import website","import-website-sub":"Crawl your site and turn its pages into articles.","importing-pages":"Importing {completed} of {total} pages...","in-progress":"In progress","learning":"Learning...","most-cited":"Most used by AI","most-cited-count":"{count} citation | {count} citations","most-cited-description":"Information that Gruvi AI agents refer to the most when answering questions. Keep this up to date.","overview":"Overview","processing":"Processing","ready-to-review":"Scan complete. Click to review pages.","recently-opened":"Recently opened","review-pages":"Review pages","scanning":"Scanning...","search-no-results":"No articles found","search-placeholder":"Search articles...","search-results":"Search results","stats":{"articles":"Articles","draft":"Draft","needs-review":"Needs review","open-gaps":"Open gaps","published":"Published"},"stop":"Stop","stop-description":"Any pages already imported will be removed. You can always start a new import later.","stop-title":"Stop importing {name}?","upload-document":"Upload document","upload-document-sub":"Add a PDF, Word, or text file.","write-article":"Write article","write-article-sub":"Start from a blank article."},"import-progress":{"summary":"{imported} imported, {failed} failed, {noContent} no content"},"indexing":{"complete-toast":"Gruvi's AI has finished learning your content","failed":"The AI couldn't learn this article.","failed-pages":"{failed} failed","learning":"The AI is learning...","learning-article":"The AI is learning this article...","learning-pages":"The AI is learning, {indexed} of {total} pages ready","ready":"Ready","retry":"Try again"},"issues-dialog":{"banner-summary":"{count} page couldn't be imported | {count} pages couldn't be imported","group-title":{"blocked":"Access blocked ({count})","empty":"Empty pages ({count})","rate-limited":"Rate limited ({count})","timeout":"Timed out ({count})","unreachable":"Unreachable pages ({count})"},"group":{"blocked":"Access was blocked (login required or robots.txt).","empty":"These pages appear to be empty. Re-syncing may pick up new content.","rate-limited":"Too many requests. Try re-syncing later.","timeout":"These pages took too long to load.","unreachable":"These pages could not be reached."},"ignore":"Ignore these pages","no-issues":"No import issues found.","page-count":"{count} page | {count} pages","resync":"Re-sync","resync-hint":"Re-syncing may resolve some of these issues.","title":"Import issues"},"manage-pages":{"description":"Choose which sections to include from {domain}.","no-changes":"No changes","pages-selected":"{selected} of {total} pages selected","save":"Save changes","success":"Page selection updated","title":"Manage page selection"},"notion":{"description":"Connect your Notion workspace to sync pages and databases directly into your knowledge sources.","title":"Notion integration coming soon"},"onboarding":{"dismiss":"Dismiss","import-complete":"We imported {count} pages from your website.","importing":"Importing your website...","notify-when-done":"We'll notify you when it's done.","pages-imported":"{count} pages imported so far","review-below":"Review them below."},"origin":{"document":"Document","manual":"Manual","website":"Website"},"panel":{"add-article":"Add article","add-content-aria":"Add content","add-source":"Add source","add-source-document":"Upload files","add-source-google-drive":"Google Drive","add-source-linear":"Linear","add-source-notion":"Notion","add-source-website":"Sync website","add-subfolder":"Add subfolder","articles":"Articles","cannot-delete-website-folder":"Disconnect the website to delete this folder.","change-icon":"Change icon","collapse":"Collapse panel","coming-soon":"Coming soon","content":"Knowledge Sources","delete-article":"Delete","delete-failed":"Failed to delete. Please try again.","delete-folder":"Delete","delete-folder-type":"Type {name} to confirm:","delete-folder-with-articles-plural":"Delete '{name}'? The {count} article inside will be moved to the root level. | Delete '{name}'? The {count} articles inside will be moved to the root level.","delete-folder-with-articles-permanent-plural":"The {count} article inside will be permanently deleted. | The {count} articles inside will be permanently deleted.","delete-website":"Delete website","delete-website-description":"All imported articles will be permanently removed.","delete-website-title":"Delete this website source?","delete-website-type":"Type {name} to confirm:","documents":"Documents","draft":"Draft","duplicate":"Duplicate","empty-description":"Add content to teach your agent about your business. The more it knows, the better it helps your customers.","empty-title":"Your AI agent is ready to learn","expand":"Expand panel","folders":"Folders","gaps":"Gaps","google-drive":"Google Drive","home":"Home","linear":"Linear","more-sources":"More","move-to":"Move to...","new-folder":"New folder","no-results":"No results found","notion":"Notion","published":"Published","re-sync-all":"Re-sync all articles","remove-confirm-description":"This permanently removes this source and everything imported from it.","remove-confirm-title":"Remove source?","rename-article":"Rename","rename-folder":"Rename","root-level":"Root level","search-placeholder":"Search articles and folders...","source-didnt-finish":"Didn't finish","source-error-file-corrupt":"This file appears to be corrupted or password-protected.","source-error-file-empty":"No readable content found in this file.","source-error-website-access":"Could not access this website. It may be slow or blocking our crawler.","source-deleting":"Deleting...","source-error-website-auth":"This website requires authentication. We can only import public pages.","source-failed-indexing":"{failed} failed","source-failed-title":"Import failed","source-importing":"Importing...","source-importing-progress":"Importing {current}/{total}","source-learned-count":"{count} learned | {count} learned","source-learning":"Learning...","source-learning-progress":"Learning {indexed}/{total}","source-nothing-imported":"Nothing imported yet","source-pages-not-imported":"{count} page did not import | {count} pages did not import","source-pages-count":"{imported}/{total} pages","source-pages-progress":"{imported}/{total}","source-plan-limit-action":"Click to review pages and upgrade","source-plan-limit-waiting":"{count} page waits on your plan limit | {count} pages wait on your plan limit","source-queued":"Queued","source-remove":"Remove","source-resume":"Resume","source-retry":"Retry","source-review":"Needs Review","source-scanning":"Scanning...","source-stop":"Stop import","source-tooltip-after-crawl":"Learning finishes after the crawl.","source-tooltip-articles-failed":"{count} article could not be learned | {count} articles could not be learned","source-tooltip-learned":"{indexed} of {total} articles learned","source-tooltip-learned-so-far":"{indexed} of {total} articles learned so far","source-tooltip-pages":"{imported} of {total} pages imported","source-tooltip-pages-in":"Every page is in. Learning is finishing.","source-unfinished-line":"{count} page didn't finish | {count} pages didn't finish","source-unlearned-line":"{count} article wasn't learned | {count} articles weren't learned","source-unlearned-tooltip":"These pages imported, but the AI could not learn them, so it won't use them in replies. Retry to try again.","source-unfinished-tooltip":"{imported} of {total} pages imported. Unfinished pages retry automatically; Resume runs them now.","sources":"Sources","stop-confirm-description":"This cancels the import and discards the pages added so far.","stop-confirm-title":"Stop import?","website-settings":"Website settings","websites":"Websites"},"public-article":{"last-edited":"Last edited {date}","not-found-description":"This article doesn't exist or isn't available.","not-found-title":"Article not found","powered-by":"Powered by Gruvi"},"publish-prompt":{"choose":"Do you want to check the content before Gruvi's AI learns it?","done":"Done","publish-all":"Publish all","publish-all-description":"All articles will be immediately available to your AI agent for answering customer questions.","publish-error":"Failed to publish articles. You can publish them manually from the Articles view.","publishing":"Publishing...","review-first":"Review first","review-first-description":"Articles will be saved as drafts. Review and publish them individually or in bulk from the Articles view.","summary-document":"{count} articles created from {name}","summary-website":"{count} articles imported from {name}","title":"Import complete"},"quick-action":{"import-website":"Import from website","upload-document":"Upload a document","write-article":"Write an article"},"reupload":{"confirm":"Replace content","description":"You've edited this article since it was imported. Re-uploading will replace all your changes with the new file's content.","title":"Replace document content?","warning":"This cannot be undone."},"review":{"accept":"Accept","accept-all":"Accept all","accept-all-confirm":"Accept all {count} changes? This will publish all pending changes.","additions":"{count} additions","change-added":"Added","change-modified":"Modified","change-removed":"Removed","changes-count":"{count} changes","empty-description":"All your knowledge sources are up to date.","empty-title":"No changes to review","keep":"Keep","new-article-banner":"This is a new article from the re-sync. No previous version to compare.","re-synced-ago":"Re-synced {time}","reject":"Reject","removals":"{count} removals","removed-article-banner":"This article's source page is no longer available. Keep it or remove it.","subtitle":"{count} article needs review | {count} articles need review","title":"Review","toast":{"accept-all-error":"Failed to accept all changes","accept-error":"Failed to accept changes","reject-error":"Failed to reject changes"}},"share-dialog":{"copy-link":"Copy link","description":"Anyone with this link can view this article.","link-copied":"Copied","title":"Share article","unpublish-warning":"If you unpublish this article, the link will stop working."},"sidebar":{"content":"Content","documents":"Documents","website":"Website"},"source-articles":{"back-to-documents":"Documents","back-to-sources":"Sources","back-to-websites":"Websites","last-synced":"Last synced: {time}","re-sync":"Re-sync","search-placeholder":"Search articles...","showing-count":"Showing {shown} of {total} articles"},"source-banner":{"add-page":"Add a page","archive-all":"Archive all articles","auto-accept":"Auto-accept new and updated pages","created-manually":"Created manually","detach":"Detach","detach-hint":"Edit the source to update, or detach to edit here.","detached":"Detached","document-imported":"Imported from {name}","document-read-only":"This article is read-only. Click edit to make changes.","edit-article":"Edit article","edit-content":"Edit content","edit-to-detach":"Edit to detach from source. Changes won't sync.","failed-pages-kept":"{imported} of {total} pages imported before the run stopped. Retrying crawls the site again from the start.","import-issues":"Some pages could not be imported","imported-at":"Imported {time}","imported-from":"Imported from {name}","last-edited":"Last edited {time}","last-synced":"Last synced {time}","live-sync":"Live sync enabled. Updates every hour.","manage-pages":"Manage pages","missing-pages":"Missing pages?","open-source":"Open source","originally-from":"Originally from {source}","publish-all":"Publish all articles","re-sync":"Re-sync","re-upload":"Re-upload","read-only":"This article is read-only. To update it, re-sync the website.","read-only-hint":"This content is synced from {source}. Edit to detach.","resync-failed":"The source page could not be reached. It may have been moved or deleted.","resyncing":"Re-syncing...","scanning-source":"Scanning {domain}...","scanning-source-hint":"Feel free to navigate away. We'll notify you when it's done.","scheduled-sync":"Scanned every two weeks for changes.","sync-live":"Live sync","sync-scheduled":"Auto syncs bi-weekly.","synced-from":"Synced from {name}","website-settings":"Website settings"},"source-error":{"browser-not-configured":"The browser service is not available","crawl-exhausted":"Crawl failed after multiple attempts","file-processing-exhausted":"File processing failed after multiple attempts","import-exhausted":"Import failed after multiple attempts","no-discovered-pages":"No pages were found to import","no-matching-pages":"No matching pages found for the selected paths","no-pages-imported":"No pages could be imported from this source","no-pages-selected":"No pages were selected for import","processing-exhausted":"Processing failed after multiple attempts","sitemap-empty":"The sitemap returned no pages","sitemap-refresh-failed":"Could not refresh the sitemap","source-no-url":"This source has no URL configured","stuck-recovered":"Import was interrupted and recovered","unknown":"An unexpected error occurred"},"source-pages":{"hide-details":"Hide page details","show-details":"Show page details","status":{"archived":"Archived","crawling":"Crawling","failed":"Failed","imported":"Imported","no-content":"No content","pending":"Pending"}},"source-settings":{"auto-accept":"Auto-accept changes on re-sync","auto-accept-description":"Changes are published immediately without going through the review queue.","sync-frequency":"Re-sync frequency","sync-frequency-coming-soon":"Scheduled re-sync coming soon","sync-frequency-manual":"Manual","title":"Source settings","toast":{"save-error":"Failed to save source settings"}},"sources":{"add-source":"Add source","columns":{"added":"Added","documents":"Documents","last-synced":"Last synced","name":"Name","status":"Status","type":"Type"},"crawl-settings":"Crawl settings","crawl-type-url":"Single page","crawl-type-website":"Crawl entire website","documents":"Documents","empty-description":"Add a website URL or upload files to import content into your knowledge sources.","empty-title":"No sources yet","exclude-patterns":"Exclude patterns","extraction-warning":"Some pages may have incomplete content. Review the extracted articles to verify accuracy.","footer-count":"{articles} articles across {sources} sources","include-patterns":"Include patterns","max-depth":"Max depth","max-pages":"Max pages","no-documents":"No documents extracted yet.","patterns-hint":"One pattern per line. Use * as wildcard.","re-sync":"Re-sync","reprocess":"Reprocess","retry-failed":"Retry failed pages","source-detail":"Source details","source-name-label":"Name","source-name-placeholder":"Optional display name","start-crawling":"Start crawling","status-crawling":"Crawling","status-indexing":"Learning","status-needs-attention":"Needs attention","status-pending":"Pending","status-processing":"Processing","status-queued":"Queued","status-ready":"Ready","status-stale":"Stale","tab-content":"Content","tab-files":"Files","tab-sources":"Sources","tab-website":"Website","title":"Sources","toast":{"bulk-resync-error":"Failed to start re-sync","bulk-resync-started":"Re-syncing {count} articles...","crawl-error":"Failed to add source","crawl-started":"Source added, crawling started","retry-error":"Failed to retry failed pages","source-complete-document-plural":"{count} article created from {name} | {count} articles created from {name}","source-complete-issues":"Some pages could not be imported. Open the source to review them.","source-complete-website-plural":"{count} article imported from {name} | {count} articles imported from {name}","source-error-document":"Processing failed for {name}","source-error-website":"Crawl failed for {name}","source-ready":"{count} articles imported from source","sync-error":"Failed to sync source","sync-started":"Re-sync started","sync-started-hint":"Syncing {name}. We'll notify you when ready"},"type-file-upload":"File","type-url":"URL","type-website":"Website","website-url-label":"Website URL","website-url-placeholder":"https://example.com"},"status":{"archived":"Archived","draft":"Draft","needs-review":"Needs Review","published":"Published"},"success":{"close":"Close","close-hint":"Feel free to close this window. We'll notify you when it's done.","document-description":"Your files are being processed. Your agent is learning from them, this might take a bit.","document-title":"You're all set!","page-description":"We're adding this page to {domain}. It will show up in the right folder shortly.","page-title":"Page added","website-description":"Gruvi's AI agents are learning from your web pages, this might take a little time. We'll let you know when it's done.","website-title":"You're all set!"},"sync-status":{"crawling-plural":"Crawling... {count} page found | Crawling... {count} pages found","discovering":"Discovering pages...","indexing":"Indexing... {current} of {total} articles","never-synced":"Not synced yet","processing":"Processing... {current} of {total} articles","retry":"Retry","sync-failed":"Sync failed","synced-ago":"Synced {time}"},"sync-summary":{"archived":"{count} archived","dismiss":"Dismiss","errors-title":"Errors","new-pages":"{count} new","retry-succeeded":"{count} retry succeeded","still-failing":"{count} still failing","title":"Sync complete","unchanged":"{count} unchanged","updated":"{count} updated","view-issues":"View issues"},"table-viewer":{"columns-count-plural":"{count} column | {count} columns","double-click-to-edit":"Double-click a cell to edit","next":"Next","no-data":"No data in this table","page-info":"Showing {from} to {to} of {total}","previous":"Previous","rows-count-plural":"{count} row | {count} rows","saved":"Saved","saving":"Saving...","search-placeholder":"Search table...","sheet":"Sheet"},"title":"Knowledge Sources","upload":{"background-hint":"Uploads will continue in the background","complete":"{count} file(s) uploaded. Processing...","errors":"{count} file(s) failed to upload","start":"Upload {count} file(s)","title":"Upload documents"},"websites":{"add":"Sync website","article-count":"{count} articles","empty-description":"Sync your website, help center, or documentation so your AI agent can learn from it.","empty-title":"No websites connected","footer-stats":"{live} live · {syncing} syncing · {articles} articles total","remove":"Remove website","remove-description":"This will remove the website and all {count} articles imported from it. Detached articles will not be affected.","remove-title":"Remove {name}?","search-placeholder":"Search websites..."},"welcome":{"add-content":"Add knowledge source","getting-started":"It's easy to add new knowledge sources.","step-1-description":"E.g. scan your website, upload docs, write the articles here yourself.","step-1-title":"Choose the source","step-2-description":"Optional but useful, find out why here.","step-2-title":"Group and organise the information into folders","step-3-description":"And use it to answer customers.","step-3-title":"Decide which agents can see the information","wizard-hint":"Our Gruvi setup wizard will guide you through."},"wizard":{"advanced-settings":"Advanced settings","ai-agent-enabled":"Enabled","ai-agent-label":"AI Agent","close-hint":"You can close this dialog. We'll notify you when it's done.","complete":"All done! {count} pages imported.","discovering":"Discovering pages...","estimated-time":"Estimated time","excluded-pages":"{count} pages were excluded","filter-pages":"Filter pages...","importing":"Importing your website...","large-site-hint":"Large sites can take a minute...","pages-found":"We found {count} pages. Select which ones to import.","pages-found-count":"pages found","pages-importing":"{imported} of {total} pages imported","pages-label":"Pages","pages-selected":"{selected} of {total} pages selected","ready-to-sync":"Ready to sync","scan-error":"Couldn't reach this website","source-label":"Source","start-sync":"Start sync","step-pages":"Pages","step-start":"Start","step-url":"URL","still-scanning":"Gruvi is learning from your website....","time-1-2-min":"1–2 minutes","time-2-5-min":"2–5 minutes","time-5-10-min":"5–10 minutes","title":"Sync website","url-description":"Enter the URL of your website, help center, or documentation.","url-hint":"We'll discover all pages under this URL.","url-label":"Website URL","url-placeholder":"https://help.example.com","view-articles":"View articles"}},"languages":{"ar":"Arabic","cs":"Czech","da":"Danish","de":"German","el":"Greek","en":"English","es":"Spanish","fi":"Finnish","fr":"French","he":"Hebrew","hi":"Hindi","hu":"Hungarian","id":"Indonesian","it":"Italian","ja":"Japanese","ko":"Korean","nl":"Dutch","no":"Norwegian","pl":"Polish","pt":"Portuguese","ro":"Romanian","ru":"Russian","sv":"Swedish","th":"Thai","tr":"Turkish","uk":"Ukrainian","vi":"Vietnamese","zh":"Chinese"},"link-preview":{"dismiss":"Remove preview","open-link":"Open link"},"message":{"ai-sender-fallback":"AI","ai-sender-label":"{name} · AI","day":{"today":"Today","yesterday":"Yesterday"},"email":{"no-body":"No message body"},"loading":"Loading thread history...","nothing-received":"Nothing arrived with this message.","quoted-attachment":"Attachment","scroll-to-bottom":"Scroll to bottom","sources-count":"{count} source | {count} sources","status":{"delivered-at":"Delivered at {time}","failed":"Failed to send","failed-reason":{"bounced":"The recipient's mail server rejected this email.","channel-misconfigured":"This channel is misconfigured. Check its settings.","dkim-not-verified":"DKIM is not verified for this channel's sending domain. Verify it in Settings.","no-customer-email":"This customer has no email address on file.","send-exhausted":"Couldn't reach the email provider after several attempts. Try again in a moment.","suppressed":"Recipient unsubscribed from this channel.","unknown":"Send failed. Try again or check the channel settings."},"failed-retry":"Retry send","failed-retry-error":"Couldn't retry sending this message. Try again in a moment.","failed-retrying":"Retrying...","read-at":"Read at {time}","sending":"Sending...","sent":"Sent"},"via-email":"via email"},"notifications":{"panel":{"context":{"change-snooze":"Change snooze time","delete":"Delete","mark-read":"Mark as read","mark-unread":"Mark as unread","snooze":"Snooze","snooze-15m":"15 minutes","snooze-1h":"1 hour","snooze-next-week":"Next week","snooze-tomorrow":"Tomorrow morning","snoozed-until-date":"Snoozed until {date}, {time}","snoozed-until-time":"Snoozed until {time}","snoozed-until-tomorrow":"Snoozed until tomorrow, {time}","unsnooze":"Unsnooze"},"empty-all-description":"New notifications will show up here.","empty-all-title":"No notifications yet","empty-description":"No new notifications","empty-title":"All caught up","empty-unread-description":"No unread notifications right now. Anything you've read is in the All tab.","group-older":"Older","group-this-week":"This week","group-today":"Today","group-yesterday":"Yesterday","mark-all-read":"Mark all read","preferences":"Preferences","tab-all":"All","tab-unread":"Unread","title":"Notifications"}},"onboarding":{"ai":{"name":"Set up your AI","steps":{"intro":{"capabilities":{"act":{"description":"Completes the task itself, the refund, the update, with you approving every step. Human in the loop, always.","title":"Takes action for customers"},"gather":{"description":"When a request needs more, like a refund or an address change, Chloe asks the right follow-ups to move it forward.","title":"Gathers the missing details"},"knowledge":{"description":"Replies to customer questions about your products, hours and policies, drawn straight from your knowledge base.","title":"Answers from your knowledge base"}},"subtitle":"Your AI support agent. Here's what they can do for your customers.","title":"Meet Chloe"}}},"avatar":"Avatar","branding":{"name":"Colors & Logo","steps":{"colors-logo":{"accent-color":"Accent color","analyzing":"Give me a moment, I'm checking out your website...","analyzing-colors":"Picking your brand colors...","analyzing-logo":"Finding your logo...","analyzing-website":"Looking at your website...","hint":"You can always change these later.","main-color":"Main color","title":"Looking good! I got your company’s logo and colors from there.","title-brand":"Now let's make Gruvi feel like home. Add your logo and pick your brand color.","title-no-logo":"I couldn’t find a logo on your website, but no worries, add yours below or skip for now."}}},"channels":{"default-chat-name":"Gruvi Live Chat","email-card":{"copied":"Copied","copy":"Copy address"},"name":"Support Channels","steps":{"chat":{"code-copied":"Copied","copy-code":"Copy code","description":"Copy and paste the following code snippet into your website’s HTML to add the Gruvi web chat","dev-hint":"Not technical? Send this snippet to whoever manages your website.","email-instructions-button":"Email instructions","got-it":"Got it","hint":"Not technical? You can email these instructions to your developer.","install-description":"Paste it into your website’s HTML, just before the closing </body> tag. The chat goes live for your visitors as soon as the code is on your site.","install-title":"Place this code on your website","live-label":"Live in the preview","preview-address-label":"Website address to preview","preview-button":"Try it out","preview-description":"Enter a website URL to preview the live chat on that site.","preview-fallback-button":"Preview how it looks","preview-go":"Preview","preview-label":"Preview URL","preview-title":"Live chat preview","settings-footnote":"You can find this code anytime in Settings, under Live chat.","setup-dialog-description":"Copy and paste the following code snippet into the HTML of your website, just before the closing </body> tag.","setup-instructions":"Setup instructions","title":"Let’s set up your Live Chat to start receiving customer messages.","try-cta":"Your chat widget is already running in the preview. Open it and send yourself a test message, it will land straight in your inbox.","try-title":"Send your first message"},"email-forward":{"address-label":"Your forwarding address","description":"We just need to route the emails into Gruvi.","diagram":{"customer":"Customer","your-email":"Your Email"},"email-label":"Your existing support email","email-placeholder":"support{'@'}yourcompany.com","forward-hint":"Set up forwarding from {email} to this address. To send replies from your own domain, verify it later in Settings.","forward-hint-generic":"Set up forwarding from your support email to this address. To send replies from your own domain, verify it later in Settings.","generate":"Get my forwarding address","help":"Need help setting up forwarding?","hint":"You can customize this later, in your Gruvi set up panel.","title":"Connect your support email to receive customer emails in Gruvi."},"email-gruvi":{"activating":"Activating your address. This takes a couple of minutes, nothing for you to do.","active":"Your address is active and ready to receive email.","address-label":"Your customer support email","create-failed":"We could not create your support email right now. You can set it up anytime in Settings.","hint":"You can customize this later, in your Gruvi set up panel.","later-hint":"If you set up your own email address later, you can connect it to Gruvi anytime.","title":"We’ve set up a support email address for you. Give this to your customers!"},"email":{"hint":"You can customize this later, in your Gruvi set up panel.","options":{"forward":"Yes, I have a customer support email","forward-description":"e.g. support{'@'}acme.com","gruvi":"No, I don’t have one yet","gruvi-description":"We’ll set up a Gruvi email for you"},"title":"Do you already have an email address you use for customer support?"},"select":{"coming-soon":"More channels coming soon","description":"Select the channels you want to set up right now.","hint":"You can always add more later.","more-in-settings":"More channels to explore in Settings","options":{"chat":"Live Chat","chat-description":"Embed a chat bubble on your website for real-time conversations with visitors.","email":"Support Email","email-description":"Connect your support address (e.g. support{'@'}acme.com) to manage emails as tickets."},"subtitle":"Where customers reach you","title":"How should customers contact you when they need help or have a question?"}}},"checklist-building":"Building the 5 minute setup checklist...","checklist-done":"5 minute setup checklist","chloe":{"name":"Meet Chloe","steps":{"mode":{"intro":"Your AI support agent. They answer customers in your tone, straight from your knowledge base.","options":{"autonomous-description":"Replies on their own and escalates when unsure.","disabled":"Off","disabled-description":"No AI features enabled. Answer queries manually.","learning":"Learning","learning-description":"Watches conversations and builds knowledge. Never replies to customers.","on-demand-description":"Drafts a reply only when you ask them to."},"title":"Meet Chloe, your AI support agent! How should they help your team?"}}},"company":{"errors":{"company-name-max-length":"Company name must be at most 64 characters long","grant-not-applied":"We couldn't apply your invite to this account. Your workspace was created on the Free plan.","website-url-invalid":"Please enter a valid website URL.","website-url-max-length":"Website URL must be at most 255 characters long","workspace-url-invalid":"Workspace URL can only contain letters, numbers, and hyphens.","workspace-url-max-length":"Workspace URL must be at most 32 characters long","workspace-url-min-length":"Workspace URL must be at least 3 characters long","workspace-url-taken":"This workspace URL is already taken. Please choose another one.","workspace-url-unavailable":"This workspace URL isn't available. Please choose another one."},"name":"Company Info","steps":{"name":{"company-name":"Company name","title":"What do you want to call your Gruvi workspace?","title-personal":"Nice to meet you, {name}! What do you want to call your Gruvi workspace?","title-personal-plan":"Nice to meet you, {name}! Let's get your {plan} workspace set up. What should we call it?","title-plan":"Let's get your {plan} workspace set up. What should we call it?","workspace-url":"Workspace URL"},"url":{"hint":"You can change this if you want.","title":"Great 🎉 Does your company have a website?","website-url":"Website URL"}}},"go-to-workspace":"Go to {name}","intro":{"progress-done":"{done} of {total} done","progress-next":"Next: {stage}","start-new-workspace":"Create a new workspace instead","steps-left-plural":"Just one step left. | Just {count} steps left.","title":"Hello 👋 welcome to Gruvi! I’m building your 5 minute set up checklist.","welcome-back":"Welcome back, {name}! {workspace} is almost ready.","welcome-back-no-name":"Welcome back! {workspace} is almost ready."},"login":{"errors":{"display-name-max-length":"Display name must be at most 50 characters long","name-max-length":"Name must be at most 100 characters long"},"name":"Login","steps":{"profile":{"display-name-placeholder":"What should we call you? e.g., Alex","hint":"This is how we’ll greet you in the app.","name-placeholder":"Enter your full name","title":"Nice to meet you! Tell us a bit about yourself."}}},"plan":{"compare":"Compare","continue":"Continue with {plan}","footnote":"No card needed to start. Change your plan anytime.","footnote-paid":"Change your plan anytime.","name":"Plan","selected":"Selected","selector-label":"Plan:","trial-continue":"Start {days}-day free trial"},"scan":{"failed-body":"We weren't able to access pages on {domain}. You can try importing it again from your knowledge sources, or add content another way.","failed-title":"We couldn't read your website","partial-body":"We read {successCount} pages from {domain}, but {failedCount} pages couldn't be loaded. Your AI agent is ready to help with what we found.","partial-title":"Your website is mostly ready","success-body":"We've finished reading {domain} and added {count} pages to your knowledge sources. Your AI agent can now answer questions about your business.","success-title":"Your website is ready"},"setup":{"name":"Setup","steps":{"checkout":{"continue-free":"Continue on Free","error":"Something went wrong starting your plan. Try again.","later":"I'll set this up later, start on Free","not-configured":"Payments aren't set up for this workspace yet. You can start on Free and upgrade anytime.","subtitle":"Secured by Stripe, right inside Gruvi. You won't leave this page.","title":"Start your {plan} plan","trial-access":"Full {plan} access with {threads} threads a month and unlimited users.","trial-error":"The trial didn't start. Nothing was charged. Try again in a moment.","trial-footnote":"No card needed today.","trial-price-free":"Free for {days} days","trial-price-then":"then {price}{interval}","trial-start":"Start {days}-day free trial","trial-used":"A free trial isn't available for this workspace, so it starts with a regular checkout."},"ready":{"call-to-action":"Take me to Gruvi","completion-failed":"Setup could not finish. Please try again.","title":"Done! Welcome to Gruvi 🎉 Gruvi is the easy support inbox with insights, alerts & AI that works."}}},"team":{"name":"Invite your team","steps":{"invite":{"hint":"You can do this later too.","title":"Do you want to invite anyone else to use Gruvi with you?"}}}},"permission":{"forbidden":"You don't have permission to do that. Your access may have changed."},"permissions":{"actions":{"actions-review":"Review AI proposals","actions-review-description":"Approve or reject standard AI action proposals.","actions-review-elevated":"Review elevated proposals","actions-review-elevated-description":"Approve or reject AI proposals routed to admin review.","domain":"AI approvals","runs-approve-sensitive":"Approve sensitive runs","runs-approve-sensitive-description":"Approve skill runs that move money or change accounts.","runs-approve-standard":"Approve standard runs","runs-approve-standard-description":"Approve low-risk skill runs."},"ai-agents":{"ai-agents-configure":"Configure AI agents","ai-agents-configure-description":"Change AI agent behavior, instructions, and settings.","ai-agents-create":"Create AI agents","ai-agents-create-description":"Add new AI agents to the workspace.","ai-agents-view":"View AI agents","ai-agents-view-description":"See the AI agents configured in the workspace.","ai-use-assistant":"Use AI assistant","ai-use-assistant-description":"Use the AI assistant to draft and improve replies.","ai-use-operator":"Use AI operator","ai-use-operator-description":"Chat with the AI operator for help and actions.","domain":"AI agents and assistant"},"canned-replies":{"canned-replies-create":"Create canned replies","canned-replies-create-description":"Add new saved replies for the team.","canned-replies-delete":"Delete canned replies","canned-replies-delete-description":"Remove saved replies from the workspace.","canned-replies-update":"Edit canned replies","canned-replies-update-description":"Change the title and content of saved replies.","canned-replies-view":"View canned replies","canned-replies-view-description":"Browse the saved replies in the workspace.","domain":"Canned replies"},"channels":{"channels-create":"Create channels","channels-create-description":"Connect new channels to the workspace.","channels-delete":"Delete channels","channels-delete-description":"Disconnect channels from the workspace.","channels-manage-secrets":"Manage channel secrets","channels-manage-secrets-description":"View and update channel credentials and tokens.","channels-update":"Edit channels","channels-update-description":"Change channel names and settings.","channels-view":"View channels","channels-view-description":"See the channels connected to the workspace.","domain":"Channels"},"connections":{"connections-manage":"Manage connections","connections-manage-description":"Create and configure integrations and their credentials.","connections-promote":"Promote connections","connections-promote-description":"Promote or rotate live integration credentials.","connections-view":"View connections","connections-view-description":"See the integrations connected to the workspace.","domain":"Connections"},"customers":{"customers-archive":"Archive customers","customers-archive-description":"Archive customers to hide them from active lists.","customers-block":"Block customers","customers-block-description":"Block customers from reaching the workspace.","customers-create":"Create customers","customers-create-description":"Add new customers to the workspace.","customers-delete":"Delete customers","customers-delete-description":"Permanently remove customer profiles.","customers-import":"Import customers","customers-import-description":"Bulk import customers from a file.","customers-merge":"Merge customers","customers-merge-description":"Combine duplicate customer profiles into one.","customers-update":"Edit customers","customers-update-description":"Change customer details and profile information.","customers-view":"View customers","customers-view-description":"See customer profiles and their details.","domain":"Customers and topics","topics-review-proposals":"Review topic proposals","topics-review-proposals-description":"Approve or reject proposed topics.","topics-view":"View topics","topics-view-description":"See the topics used to classify conversations."},"group-chats":{"domain":"Group chats","group-chats-connect":"Connect Telegram groups","group-chats-connect-description":"Connect a Telegram group to the workspace.","group-chats-manage":"Manage Group chats","group-chats-manage-description":"Change group settings, archive, and disconnect.","group-chats-route":"Route group messages","group-chats-route-description":"Create threads and link, move, or remove messages."},"insights":{"domain":"Insights","insights-export":"Export insights","insights-export-description":"Export reporting data out of the workspace.","insights-view":"View insights","insights-view-description":"See reporting dashboards, including teammate performance."},"knowledge":{"domain":"Knowledge base","knowledge-create":"Create articles","knowledge-create-description":"Write new knowledge base articles.","knowledge-delete":"Delete articles","knowledge-delete-description":"Remove articles from the knowledge base.","knowledge-manage-folders":"Manage folders","knowledge-manage-folders-description":"Create and organize folders in the knowledge base.","knowledge-manage-sources":"Manage sources","knowledge-manage-sources-description":"Connect and sync external knowledge sources.","knowledge-publish":"Publish articles","knowledge-publish-description":"Make articles live and visible to customers.","knowledge-update":"Edit articles","knowledge-update-description":"Change the content of existing articles.","knowledge-view":"View knowledge base","knowledge-view-description":"Read articles in the knowledge base."},"labels":{"domain":"Labels and properties","labels-assign":"Apply labels","labels-assign-description":"Add and remove labels on conversations.","labels-create":"Create labels","labels-create-description":"Add new labels for the workspace.","labels-delete":"Delete labels","labels-delete-description":"Remove labels from the workspace.","labels-update":"Edit labels","labels-update-description":"Rename labels and change their colors.","labels-view":"View labels","labels-view-description":"See the labels available in the workspace.","properties-manage":"Manage properties","properties-manage-description":"Create, edit, and remove custom properties.","properties-view":"View properties","properties-view-description":"See the custom properties defined in the workspace."},"members":{"domain":"Members and teams","members-invite":"Invite members","members-invite-description":"Send invitations to add new people to the workspace.","members-remove":"Remove members","members-remove-description":"Remove people from the workspace.","members-update-role":"Change member roles","members-update-role-description":"Assign roles and change what other members can do.","members-view":"View members","members-view-description":"See who belongs to the workspace.","teams-create":"Create teams","teams-create-description":"Add new teams to organize members.","teams-delete":"Delete teams","teams-delete-description":"Remove teams from the workspace.","teams-update":"Edit teams","teams-update-description":"Rename teams and change their members.","teams-view":"View teams","teams-view-description":"See teams and their members."},"notifications":{"domain":"Notifications","notification-targets-manage":"Manage notification channels","notification-targets-manage-description":"Link, edit, test and remove the Slack channels and Telegram groups the workspace posts alerts to.","notification-targets-view":"View notification channels","notification-targets-view-description":"See the Slack channels and Telegram groups the workspace posts alerts to."},"skills":{"domain":"Skills and rules","rules-manage":"Manage rules","rules-manage-description":"Create, edit, and delete automation rules.","rules-view":"View rules","rules-view-description":"See automation rules and their run history.","skills-autonomy-unlock":"Unlock skill autonomy","skills-autonomy-unlock-description":"Allow skills to take actions without approval.","skills-manage":"Manage skills","skills-manage-description":"Create and edit skills and their instructions.","skills-view":"View skills","skills-view-description":"Browse the skills surface, its runs, and its activity.","skills-publish":"Publish skills","skills-publish-description":"Make skill changes live for the AI agent.","training-rules-publish":"Publish training rules","training-rules-publish-description":"Publish coached rules so they shape live replies."},"threads":{"domain":"Threads and inbox","threads-assign":"Assign to others","threads-assign-description":"Assign conversations to any member or team.","threads-assign-self":"Assign to self","threads-assign-self-description":"Take ownership of a conversation.","threads-assign-team":"Assign to a team","threads-assign-team-description":"Hand a thread to a team. The team decides who takes it.","threads-delegate-own":"Hand own threads to a teammate","threads-delegate-own-description":"Hand your open threads to a teammate while out of office.","threads-participants":"Add participants","threads-participants-description":"Add teammates to a thread or take them off it.","threads-view-all":"See every thread","threads-view-all-description":"Without this, a member sees only the threads they own, take part in, or that their team holds.","threads-close":"Close threads","threads-close-description":"Close conversations so they leave the active inbox.","threads-create":"Create threads","threads-create-description":"Start new conversations.","threads-create-note":"Add internal notes","threads-create-note-description":"Leave private notes that customers never see.","threads-mark-spam":"Mark as spam","threads-mark-spam-description":"Flag conversations as spam.","threads-reply":"Reply to threads","threads-reply-description":"Send replies to customers in a conversation.","threads-resolve":"Resolve threads","threads-resolve-description":"Mark conversations as resolved.","threads-set-properties":"Set thread properties","threads-set-properties-description":"Update custom properties on a conversation.","threads-set-recipient":"Change thread recipient","threads-set-recipient-description":"Change which customer address a conversation is delivered to.","threads-snooze":"Snooze threads","threads-snooze-description":"Snooze conversations to revisit them later.","threads-use-insights":"Use thread insights","threads-use-insights-description":"View AI summaries and insights on a conversation.","threads-view":"View threads","threads-view-description":"Open conversations in the inbox."},"trackers":{"domain":"Trackers","trackers-broadcast-customers":"Broadcast to customers","trackers-broadcast-customers-description":"Send a tracker update to the customers on linked threads.","trackers-create":"Create trackers","trackers-create-description":"Open a tracker to group related conversations under one incident.","trackers-link":"Link threads to trackers","trackers-link-description":"Attach support conversations to a tracker.","trackers-manage":"Manage trackers","trackers-manage-description":"Set a tracker's stage, severity, and participants.","trackers-note":"Add tracker notes","trackers-note-description":"Post internal war-room notes on a tracker.","trackers-resolve":"Resolve trackers","trackers-resolve-description":"Mark a tracker as resolved, optionally resolving linked threads.","trackers-unlink":"Unlink threads from trackers","trackers-unlink-description":"Remove support conversations from a tracker."},"workspace":{"announcements-view":"View announcements","announcements-view-description":"See product announcements and community feedback on them.","billing-manage":"Manage billing","billing-manage-description":"View invoices, change plans, and update payment methods.","domain":"Workspace","roles-manage":"Manage roles","roles-manage-description":"Create, edit, and assign custom roles and permissions.","workspace-delete":"Delete workspace","workspace-delete-description":"Permanently delete the entire workspace.","workspace-manage-security":"Manage security","workspace-manage-security-description":"Configure authentication, sessions, and security policies.","workspace-manage-sovereign":"Manage Sovereign","workspace-manage-sovereign-description":"Turn Sovereign on or off and read what left for the AI.","workspace-update":"Edit workspace","workspace-update-description":"Change the workspace name, branding, and general settings.","workspace-view":"View workspace","workspace-view-description":"See the workspace and its general settings."}},"presence":{"actions":{"go-offline":"Go offline"},"away-reasons":{"brb":"Be right back","break":"On a break","lunch":"Lunch","meeting":"In a meeting"},"manage":"Presence settings","declared":{"active":"Active","away":"Away","offline":"Offline"},"out-of-office":{"action":"Set out of office...","date-label":"Return date","delegate-away-error":"That teammate is out of office. Choose someone else.","delegate-inactive-error":"That teammate is no longer in this workspace. Choose someone else.","description":"Choose when you plan to return.","effect":"New conversations go to teammates. Conversations already assigned to you stay with you.","end":"End out of office","end-error":"Could not end out of office.","future-error":"Choose a future return time.","label":"Out of office","local-time":"This uses your device time.","set-error":"Could not set out of office.","submit":"Set out of office","time-label":"Return time","title":"Set out of office","until":"Until {date}","description-window":"Choose when it starts and when you plan to return.","start-date-label":"Start date","start-time-label":"Start time","starts-now-hint":"Starts now unless you pick a later time.","range-error":"Return must be after the start.","threads-title":"Your open threads","keep-title":"Keep my threads","keep-description":"Nothing changes for threads assigned to you.","handoff-title":"Hand my threads to a teammate","handoff-description":"They get your open threads now and keep them when you are back.","handoff-search":"Find a teammate","handoff-error":"Choose a teammate.","effect-keep-count":"New threads go to teammates. | New threads go to teammates. 1 open thread stays with you. | New threads go to teammates. {count} open threads stay with you.","effect-handoff-count":"New threads go to teammates. | New threads go to teammates. 1 open thread goes to {name}. | New threads go to teammates. {count} open threads go to {name}.","effect-handoff-pending-count":"New threads go to teammates. | New threads go to teammates. 1 open thread goes to the teammate you pick. | New threads go to teammates. {count} open threads go to the teammate you pick.","targets-workspace-default":"You are the default assignee for new threads.","targets-team":"You are the designated person for {name}.","targets-rules-count":"You are the target of 1 rule or SLA step. | You are the target of {count} rules or SLA steps.","targets-wait":"Those threads wait for you until you are back.","targets-handoff":"Those threads go to {name} too.","targets-handoff-pending":"Those threads go to the teammate you pick too.","from-until":"Out of office from {start} until {end}","handoff-with-count":"Hand-off to {name} | 1 thread with {name} | {count} threads with {name}","handoff-at-start":"Hand-off to {name} at start","cancel":"Cancel out of office","out-until":"Out until {day}","target-note":"Out of office until {day}. New threads for them wait until then.","target-note-handoff":"Out of office until {day}. Threads go to {name} until then."},"set-error":"Could not change your status.","set-status":"Set status","settings":{"add-reason":"Add reason","away-reasons":"Away reasons","away-reasons-description":"Customize the list of reasons users can choose when setting themselves to Away.","configuration":"Configuration","configuration-v3-description":"Set when hidden or disconnected users move to Away.","configuration-description":"Adjust idle timeout and customize away reason options.","description":"Configure presence and availability settings for your workspace.","duration":"Duration","connection":"Connection","connected":"Connected","disconnected":"Disconnected","auto-away-timeout":"Automatic Away","auto-away-timeout-description":"Minutes after all tabs are hidden or disconnected.","auto-away-enabled":"Use automatic Away","auto-away-enabled-description":"Turn this off to keep every status manual.","idle-timeout":"Idle timeout","idle-timeout-description":"Minutes of inactivity before a user is automatically set to Away.","live-overview":"Live Overview","live-overview-description":"Real-time presence status for all workspace members.","minutes":"minutes","no-reasons":"No away reasons configured.","override-error":"Failed to override user status.","override-status":"Override status","reason-placeholder":"e.g. In a meeting","remove-reason":"Remove {reason}","save-error":"Failed to save presence settings.","title":"Presence"},"status":{"away":"Away","label":"Status","offline":"Offline","online":"Online","out-of-office":"Out of office","unknown":"Checking status"}},"redeem":{"confirmed-kicker":"You're all set","continue-to-app":"Continue to Gruvi","cta":"Set up your account","cta-logged-in":"Set up your workspace","footnote":"Free for {months} months. We'll email you before it's time to add a card.","invalid-body":"This link may have expired or already been used. Ask whoever invited you for a fresh one.","invalid-title":"This invite is no longer valid","kicker":"You've been invited","mismatch-current":"Signed in as","mismatch-invited":"Invited","mismatch-title":"This invite is for a different account","not-now":"Not now","subtitle":"Your team is set up with the {plan} plan. No card needed. Let's get you in.","title":"{months} months of {plan}, on us","use-other-account":"Use {email} instead"},"rehearsal":{"coach":{"accept-answer":"Accept answer","accept-lesson":"Accept lesson","add-lesson":"Add lesson","cancel":"Cancel","coach-the-tone":"Coach the tone","coach-the-tone-hint":"Teach {name} a plain do or don't for next time.","content-placeholder":"Give the right facts in plain language.","content-source-label":"Which knowledge is wrong or missing?","content-text-label":"What should {name} say?","fix-the-content":"Fix the content","fix-the-content-hint":"Correct the knowledge this reply answered from.","hard-hint":"Checked on every reply. For money or trust.","how-strict":"How strict?","lesson-label":"Lesson (say it plainly, like coaching a teammate)","lesson-placeholder":"Never..., Always..., Keep it...","looks-right":"Looks right","marked-good":"Marked as a good example. Nothing else to do.","needs-work":"Needs work","save-correction":"Save correction","saved-content-active":"Saved to your knowledge. {name} answers from it on the next reply.","saved-content-suggested":"Saved as a content correction. It waits in your training inbox for review.","saved-lesson-active":"Saved to {name}'s lessons. It changes how {name} replies from the next message.","saved-lesson-suggested":"Saved to Training for review. It won't change {name} until you confirm it.","soft-hint":"Nudges the wording. Measured, not guaranteed.","was-this-right":"Was this reply right?","what-needs-work":"What needs work?"},"composer":{"send":"Send","stop":"Stop"},"media":{"upload-error":"That attachment didn't upload. Try sending it again."},"narration":{"action-headline":"Ran {keyword} automatically","action-held-headline":"Proposed {keyword}, then held it for your approval","action-held-story":"{name} prepared the action, but an auto-check failed, so it was held for human approval instead of running automatically.","action-story":"Every auto-check passed, so {name} executed the action without waiting for approval.","answered-headline":"Answered {keyword}","answered-keyword":"from your knowledge","answered-story":"{name} answered using your knowledge base. Grade it, and coach anything that is off.","blocked-story":"{name} said \"{claim}\", but no cited knowledge backs it up. This reply was blocked and would never reach a customer.","discretion-headline":"Proposed {keyword} as an exception","discretion-story":"{name} matched a discretion clause, cited its facts, and parked the exception for approval instead of running it.","escalated-headline":"Handed this to a {keyword}","escalated-keyword":"teammate","escalated-story":"{name} decided a human should take over and routed the conversation to your team.","flagged-headline":"This reply makes an {keyword} claim","flagged-keyword":"unverified","flagged-story":"{name} said \"{claim}\", but no cited knowledge backs it up. In a live conversation this reply would be held for review, not sent.","gap-headline":"Could not find {keyword}","gap-keyword":"an answer","gap-story":"{name} searched your knowledge and nothing matched well. This is a gap worth filling.","replied-headline":"Replied {keyword}","replied-keyword":"without searching","replied-story":"{name} answered from the conversation alone, without searching your knowledge.","resolved-headline":"Solved it and {keyword}","resolved-keyword":"closed the conversation","resolved-story":"{name} treated this as done and marked the conversation resolved.","skill-matched-headline":"Matched your {keyword} policy","skill-matched-story":"{name} recognized this as a case for the policy and is collecting the details it needs before acting."},"panel":{"band-sub":"Every message and action here runs in Gruvi's practice environment.","band-title":"You're rehearsing this skill. Nothing here is live.","close":"Close","generation-error":"The reply hit a snag. Send it again.","pinned":"Testing {title}","practice-caption":"Rehearsal never needs a {provider} test account. Gruvi provides the practice environment for every app, even apps with no sandbox of their own.","practice-caption-generic":"Rehearsal never needs a test account. Gruvi provides the practice environment for every app, even apps with no sandbox of their own.","publish-nudge":"You haven't tried this policy yet.","publish-nudge-action":"Try it first","source-label":"Rehearse against","source-practice":"Your practice copy","source-practice-provider":"Your practice {provider}","source-practice-unavailable":"Connect the app first, then rehearse against Gruvi's practice copy.","source-sample":"Sample data","source-sample-safe":"Sample data. No real data is touched.","source-sample-threads":"Sample threads","source-sample-threads-unavailable":"This skill has no sample threads yet.","source-sample-unavailable":"No sample data is set up for this skill.","source-sandbox":"Sandbox","source-sandbox-unavailable":"Connect a data source to rehearse against the sandbox.","title":"Try it out","would-escalate":"Would escalate","would-resolve":"Would resolve"},"rail":{"action":{"held":"An auto-check failed, so this was held for human approval instead of running automatically.","practice-approved":"Approval sent back. The write landed in Gruvi's practice copy, not your real data.","practice-rejected":"Rejection sent back. Nothing changed in the practice copy.","simulated-approved":"Simulated approval sent back","simulated-rejected":"Simulated rejection sent back","summary-held":"{title} · held for approval"},"coach-eyebrow":"Rehearsal","cost":{"billing":"Bills as {lane}, never your threads meter. Excluded from analytics.","billing-lane":"AI usage","cache":"Cache read / write","latency":"Latency (end to end)","model":"Model","seconds":"{value}s","tokens":"Tokens in / out"},"discretion":{"approver-admin":"An admin approves it","approver-operator":"A teammate approves it","banner":"A sanctioned exception was proposed under this policy clause. It is parked for the named approver and never runs on its own.","bounds":"Bounds","fact-basis":"Cited facts","situation":"When","summary":"{clause} · parked for approval"},"empty-description":"Choose one of the agent's replies to see what went into it.","empty-title":"Pick a reply to look at","fact-check":{"clean":"{lead} Every claim traces back to cited knowledge.","clean-lead":"All checked.","evidence":"Checked against {title}","issue":{"contradicted":"Contradicted claim","unsupported":"Unsupported claim"},"summary-all-backed":"All claims backed","summary-blocked":"Blocked · {count} issue | Blocked · {count} issues","summary-clean":"Clean","summary-flagged":"Flagged · {count} issue | Flagged · {count} issues"},"groups":{"checks":"Checks","skill":"Skill","used":"What {name} used"},"guards":{"explain":"{action} failed an auto-check, so {name} held it for your approval instead of running it.","name":{"cap":"parameter cap","channel":"channel","complete-run":"complete run","eligibility":"eligibility","identity":"identity","velocity":"velocity"},"reason":{"channel-eligible":"Eligible","channel-not-eligible":"Not eligible","eligibility-passed":"Passed","identity-verified":"Verified","no-eligibility-gates":"No eligibility checks configured","parameter-cap-exceeded":"Above cap","run-ready":"Ready to act","velocity-exceeded":"Limit reached","velocity-uncheckable":"Could not verify limit","within-parameter-cap":"Within cap","within-velocity-limit":"Within limit"},"summary-failed":"{failed} of {total} failed","summary-passed":"All {total} passed"},"knowledge":{"band":{"none":"no match","partial":"partial match","strong":"strong match"},"none":"No search this turn","score":"score {score}","summary":"{count} article · best match {band} | {count} articles · best match {band}"},"lessons":{"adherence":{"followed":"followed","not-tested":"not tested","violated":"violated"},"avoid":"avoid {text}","none":"None used yet","prefer":"prefer {text}","summary":"{count} in play","summary-violated":"{count} in play · {violated} violated"},"rows":{"action":"Action","cost":"Cost","discretion":"Exception","dos-donts":"Do's & don'ts","fact-check":"Fact check","guards":"Auto-checks","knowledge":"Knowledge","lessons":"Lessons","policy":"Policy","skill":"Skill","steps":"Steps","tools":"Tools"},"skill":{"hide":"hide","not-collected":"not collected yet","optional":"optional","progress":"{done} of {total} required","resolves-via":"Resolves via {label}","reveal":"reveal","sensitive":"sensitive","status":{"abandoned":"abandoned","canceled":"canceled","collecting":"collecting details","completed":"completed","escalated":"escalated","executing":"running","expired":"expired","failed":"failed","fetching":"checking the account","gathering":"gathering","handed-off":"handed off","proposed":"proposed","queued":"queued","ready":"ready","resolved":"resolved","retrying":"retrying","waiting-on-approval":"waiting for approval","waiting-on-customer":"waiting on the customer"}},"tools":{"step":{"check-verification-code":"Checked the verification code","execute-policy-action":"Ran the approved action","get-customer-account":"Checked the customer's account","get-customer-context":"Reviewed customer info","get-customer-history":"Reviewed past conversations","get-customer-plan":"Checked the customer's plan","get-policy":"Opened the policy","get-thread-messages":"Re-read the conversation","lookup":"Looked up records","record-policy-fields":"Recorded details","search-knowledge":"Searched knowledge","search-threads":"Searched past conversations","send-verification-code":"Sent a verification code","validate-evidence":"Checked evidence"},"summary":"{count} tool run | {count} tools run"},"turn-eyebrow":"Turn {turn} · {name}"},"session":{"error-generation-in-flight":"A reply is already on its way. Wait for it to finish, then send again.","error-rate-limited":"This workspace hit its rehearsal pace limit. Give it a few minutes, then try again.","restart-required":"You edited this skill while rehearsing. Start a new rehearsal to test the new version.","send-error":"Your message didn't send. Try again.","start-error":"The rehearsal couldn't start. Try again.","turn-limit-reached":"This rehearsal reached its message limit. Start a new one to keep going.","workspace-busy":"Too many rehearsals are running in this workspace. Wait for one to finish, then send again."},"strength":{"hard":"Hard rule","soft":"Soft guide"}},"roadmap":{"brand":"Gruvi","capabilities-plural":"{count} capability | {count} capabilities","click-hint":"Click any tile to see all features","complete":"complete","error-body":"We couldn't load the roadmap right now. Please try again later.","error-title":"Roadmap unavailable","eyebrow":"Feature Scope","filter":{"all":"All","aria-label":"Filter by status","done":"Done","empty":"No items match this filter.","in-progress":"In progress","todo":"Todo"},"footer":"Built with transparency and ❤️","headline":{"accent":"shipping.","middle":"we're","prefix":"Everything"},"in-progress-short":"active","live-updated":"Live update","loading":"Loading roadmap...","more-chips":"+{count} more","overall":{"done":"done","in-progress":"in progress","shipped":"shipped","title":"V1.0 Completion","todo":"todo"},"release":"V1.0 Release","scope-label":"V1.0 Release Scope","stats":{"areas":"Product areas","features":"Features","sub-features":"Sub-features"},"status":{"done":"Done","in-progress":"In Progress","todo":"Planned"},"tagline":"The AI-powered customer support platform. Every product area, feature, and capability shipping in V1.0.","toggle-theme":"Toggle theme","view-grid":"Grid","view-list":"List"},"rules":{"conversation":{"use-policy":"Use the response-time policy {name}.","topic-excludes":"the thread is not about","confidence-at-least":"At {percentage}% confidence or higher","confidence-below":"Below {percentage}% confidence","active-limit":"Your plan has no room for another active rule. Pause a rule or upgrade."},"action":{"apply-label":"add the label","apply-sla":"apply response targets","assign":"assign","hand-to-agent":"hand to an agent","notify":"notify","set-priority":"set priority"},"assignment-fallback":{"active-count":"{count} rule currently assigns threads before this default. | {count} rules currently assign threads before this default.","precedence":"Rules run first. This default applies when no rule assigns the thread.","view-rules":"View rules"},"card":{"ai":"AI","by-your-team":"By your team","draft-edits":"Draft edits","fired-plural":"Fired {count} time | Fired {count} times","not-running":"Not running yet","paused":"Paused","paused-by-plan":"Paused by your plan","runs-after-ai-check":"Runs automatically after an AI check","runs-instantly":"Runs instantly","runs-instantly-ai":"Runs instantly, uses one AI check","suggested-count-plural":"{count} suggested, awaiting a teammate | {count} suggested, awaiting a teammate","value-fallback":"{count} selected"},"editor":{"add-action":"Add action","add-condition":"Add condition","ai-not-sure":"Not sure it's about {topic}?","ai-not-sure-skip":"This rule does not run","ai-not-sure-suggest":"Suggest the label for a person to confirm","ai-topic-field":"the thread is about","ai-topic-hint":"Gruvi judges this from the customer's messages.","topic-placeholder":"Type a topic","topic-limit":"That is all 10 topics.","topic-too-short":"Use at least 2 letters.","assign-to":{"team":"a team","team-pool":"a team","team-round-robin":"a team, round robin","user":"a person"},"assignee-timing-hint":"When a thread starts, no one is assigned yet, so this notification is usually skipped. Notify a person or a team instead, or pick a later trigger.","back":"Back to Skills","banner":{"archived":"This rule is archived and can no longer be edited.","draft":"This rule is a draft. It is not running yet.","editing-draft":"Version {live} is live. You are editing the draft for version {next}.","gated":"This is a hybrid rule. Editing hybrid rules here arrives in a later release.","mixed":"This rule mixes all and any conditions, which cannot be edited here yet.","paused":"This rule is turned off. It is not running."},"choose":"choose","consequence":{"create":"This stays a draft until you publish it. It will not run yet.","draft":"Publishing turns this rule on as version {version}.","live":"Publishing creates version {next}. Version {live} keeps running until then."},"continue-wizard":"Continue with Gruvi wizard","create":"Create draft","create-error":"Something went wrong while creating the rule. Try again.","delete":"Delete rule","delete-body":"Deleting stops this rule for good and removes it from your list. Its run history stays intact.","delete-confirm":"Delete rule","delete-error":"Something went wrong while deleting the rule. Try again.","delete-title":"Delete this rule?","draft-edits":"Draft edits","finish-first":"Finish the incomplete parts first.","gated-actions":"This hybrid rule runs an AI check before it acts. Editing that here arrives in a later release.","labels":{"body":"This rule only adds labels, it never removes one. It will not re-add a label a teammate took off.","title":"Labels"},"match":"Match","match-toggle":"Switch between all and any","meta":"Fires the moment its trigger happens, no conversation and no judgment calls.","more-actions":"More actions","move-down":"Move step down","move-up":"Move step up","name-label":"Rule name","name-placeholder":"Name this rule","name-required":"Give this rule a name first.","new-subtitle":"A new rule starts as a draft. Shape what happens, then publish it to turn it on.","new-title":"New rule","no-conditions":"No conditions yet. This rule runs on every thread that hits the trigger.","no-customers-hint":"No customers yet. Pick another condition.","no-labels":"No labels for this target yet.","no-labels-action":"Add a label in settings","no-members":"No teammates yet.","no-members-action":"Invite a teammate in settings","no-options":"Nothing to choose yet.","no-properties":"No properties for this yet.","no-properties-action":"Add a property in settings","no-policies":"No response targets yet.","no-policies-action":"Add a response target in settings","no-teams":"No teams yet.","no-teams-action":"Add a team in settings","not-found":"This rule could not be found.","notify-to":{"assignee":"the assignee","team":"a team","user":"a person","workspace-owners":"the workspace owners"},"of-following-true":"of the following are true","pause-error":"Something went wrong while turning the rule off. Try again.","pick-action":"Action","pick-channel":"Channels","pick-field":"Pick a field","pick-label":"Pick a label","pick-member":"Pick a person","pick-operator":"Condition","pick-policy":"Response targets","pick-priority":"Priorities","pick-property":"Pick a property","pick-sentiment":"Sentiment score, 1 lowest to 5 highest","pick-status":"Statuses","pick-target":"Apply to","pick-team":"Pick a team","pick-trigger":"Trigger","pick-value":"Pick a value","publish-error":"Something went wrong while publishing. Try again.","rail":{"if-sub":"Only threads that match keep going.","then-sub":"What happens, in order.","then-sub-ai":"What happens when Gruvi is sure.","when-sub":"The moment this rule fires."},"readonly-field":"Not editable here yet","recent-runs":"Recent runs","remove-action":"Remove step","remove-condition":"Remove condition","add-company":"Add company","add-customer":"Add customer","company-fallback":"Selected company","customer-fallback":"Selected customer","remove-value":"Remove","resume-error":"Something went wrong while turning the rule on. Try again.","save-draft":"Save draft","save-error":"Something went wrong while saving. Try again.","save-publish":"Save and publish","turn-off":"Turn off","turn-on":"Turn on","value-placeholder":"Type a value","version":{"body":"Changes publish as version {number}. Each run pins the version it fired under, so history stays honest.","title":"Version"},"zone-if":"If"},"field":{"ai-escalated":"escalated by AI","ai-run-status":"skill run status","ai-topic":"AI topic","ai-topic-confidence":"AI confidence","ai-topic-text":"the thread is about","business-hours":"the time","channel":"the inbox","channel-type":"the channel","company-property":"company property","customer":"the customer","customer-company":"company","customer-property":"customer property","labels":"existing labels","sentiment-score":"sentiment","thread-created-at":"thread age","thread-priority":"priority","thread-property":"thread property","thread-status":"status"},"grammar":{"all":"all","and":"and","any":"any","if":"if","of-these-conditions":"of these conditions","or":"or","then":"Then","to":"to","when":"When"},"home":{"empty-body":"Rules fire the instant something happens, no conversation needed. Add labels, set priority, assign, and more.","empty-cta":"Build a rule","empty-title":"Turn a repeatable step into a rule","example-billing":"Route billing to the Billing team","example-priority":"Flag angry messages as high priority","example-telegram":"Tag Telegram customers as Premium","examples-lead":"Start from an example, or build your own","new":"New rule","plan-meter":"{used} of {limit} rules on your plan","search":"Search rules","search-empty":"No rules match your search.","subtitle":"Fire instantly when something happens in your inbox. No conversation, no judgment calls.","title":"Rules"},"operator":{"after":"is after","before":"is before","contains":"contains","contains-all":"includes all of","contains-any":"includes any of","contains-none":"includes none of","eq":"is","gt":"is more than","gte":"is at least","in":"is","in-many":"is one of","inside":"is during business hours","is-not-set":"is not set","is-set":"is set","lt":"is less than","lte":"is at most","neq":"is not","newer-than":"is newer than","not-in":"is not","not-in-many":"is not one of","older-than":"is older than","outside":"is outside business hours"},"rail":{"added-by":"Added by rule {name}, {time}"},"runs":{"a-label":"a label","a-policy":"the response targets","a-team":"a team","a-teammate":"a teammate","undo":{"button":"Undo this","button-topic":"Not about {topic}? Undo this","cannot":"{changes} cannot be undone.","change":{"assignment":"assigned it to {target}","handoff":"handed it to a teammate","label":"added the {label} label","notify":"notified a teammate","priority":"set priority to {priority}","sla":"applied the response targets"},"done":"Undone. Everything it changed is back as it was.","done-by":"Undone by {name}. Everything it changed is back as it was, and Gruvi has been told it got this wrong.","done-by-partial":"Undone by {name}. What could be put back is back, and Gruvi has been told it got this wrong.","done-partial":"Undone. What could be put back is back.","error":"Something went wrong while undoing. Try again.","join":", ","kept":"{changes} stayed. Someone changed this thread after the rule ran.","sentence":"Gruvi {changes}.","sentence-topic":"Gruvi read this as {topic}, so it {changes}."},"added-label-to":"Added the {label} label to {target}","applied-sla":"Applied {policy}","assigned-to":"Assigned to {target}","back":"Back to editor","count":"{count} run | {count} runs","empty-body":"When this rule fires, each run shows up here with what matched and what it did.","empty-title":"No runs yet","entity-noun":{"customer":"customer","thread":"thread"},"eyebrow":"Run log","failed":{"apply-label":"Could not add the label.","apply-sla":"Could not apply the response targets.","assign":"Could not assign the thread.","hand-to-agent":"Could not hand off to the agent.","notify":"Could not send the notification.","set-priority":"Could not set the priority.","suggest-label":"Could not create the suggestion."},"fallback-title":"Rule","gate-confident":"The AI check was confident: {pct}% met the {threshold}% gate.","gate-suggested":"The AI check was unsure: {pct}% was below the {threshold}% gate, so only a suggestion was made.","handed-to-agent":"Handed to the agent","load-more":"Load more","matched":"Matched: {conditions}.","matched-any":"Matched: runs whenever {trigger}.","more":"+{count} more","no-changes":"No changes were needed.","notified":"Notified {target}","notify-assignee":"the assignee","notify-owners":"the workspace owners","removed-item":"a removed item","set-priority":"Set priority to {priority}","skip-already-applied":"{label} was already on this {entity}.","skip-previously-removed":"A teammate removed {label} from this {entity} earlier, so the rule left it off.","skip-suggestion-pending":"A suggestion for {label} is already waiting on this thread.","skipped-generic":"This step was skipped.","stopped-cap":"Stopped: this thread hit its automation limit for the cycle.","stopped-cooldown":"Stopped: the rule recently ran on this thread.","suggested-label":"Suggested {label} for a teammate to confirm","thread-number":"thread #{number}"},"status":{"active":"Active","archived":"Archived","draft":"Draft","paused":"Paused"},"suggestion":{"already-resolved":"Someone already handled this suggestion.","confident":"{pct}% confident","confirm":"Confirm","confirm-error":"The suggestion could not be confirmed. Try again.","description":"{rule} was not confident enough to apply this on its own, so it is asking you.","dismiss":"Dismiss","dismiss-error":"The suggestion could not be dismissed. Try again.","title":"Suggested label: {label}"},"target":{"customer":"the customer","thread":"the thread"},"trigger":{"message-received":"a message arrives","priority-changed":"priority changes","reply-sent":"a reply is sent","status-changed":"status changes","thread-created":"a new thread starts"},"value":{"no":"No","yes":"Yes"},"upsell":{"ask-owner":"Ask an owner to upgrade for more rules.","available-on":"Available on {tier}","body":"All {limit} rules on your plan are in use. Upgrade to add more, or pause one you no longer need.","lock":"{tier} plan","title":"You're using all your rules","upgrade":"Upgrade"},"wizard":{"changed-tag":"Changed","chooser-title":"What are you setting up?","closing":"That's the rule. Publish it to turn it on, or save it as a draft for later.","closing-label-honesty":"I only add the label, I never remove it. And if a teammate takes it off, I will not add it back.","create-error":"The rule could not be created. Try again.","create-label-error":"The label could not be created. Try again.","create-property-error":"The property could not be created. Try again.","describe-dialog-description":"Tell the wizard what to change and the updated rule takes shape on the right. Nothing is saved until you publish or save it as a draft.","describe-discard-body":"The changes you described here have not been saved to the rule yet.","describe-discard-confirm":"Discard changes","describe-discard-title":"Discard these changes?","describe-example-1":"Also notify a teammate when it runs","describe-example-2":"Only apply it outside business hours","describe-example-3":"Change which label it adds","describe-opening":"We're editing {name}. Tell me what to change, and the updated rule takes shape on the right.","describe-unsaved":"These changes are not saved yet.","description-too-short":"Tell me a bit more. One short sentence about what should happen and when is enough.","dialog-description":"Describe what you want and it takes shape as a draft you can review before anything goes live.","dialog-title-rule":"Build a rule","dialog-title-skill":"Build a skill","door-editor":"Build a rule yourself in the editor","door-rule-desc":"Fires instantly when something happens in your inbox. Labels, routing, priorities.","door-rule-meter":"{used} of {limit} used","door-rule-title":"Build a rule","door-skill-desc":"Your agent handles the whole conversation: asks, checks, acts. For requests that need judgment.","door-skill-title":"Build a skill","downsell-keep-skill":"Keep building the skill","downsell-make-rule":"Make it a rule","editor-link":"Or build a rule yourself in the editor","editor-yourself":"Build it yourself in the editor","ghost-hint":"As we talk, your skill or rule takes shape here.","ghost-title":"Nothing yet","guard-keep-rule":"Keep building the rule","guard-mixed-scale-body":"{why} I can build the instant part now: {rule}. The part that needs a conversation, {skill}, is a skill and comes with the Scale plan.","guard-see-scale":"See the Scale plan","guard-skill-scale-body":"{why} That makes it a skill, and skills come with the Scale plan.","guard-switch-to-skill":"Switch to building a skill","kind-chip-rule":"Building a rule · runs instantly","kind-chip-rule-short":"runs instantly","kind-chip-skill-short":"handles the conversation","mixed-body":"{why} That's two things at once. As a rule: {rule} As a skill: {skill} Which would you like to build first?","mixed-build-rule":"Build the rule first","mixed-build-skill":"Build the skill","needs-answer":"Needs an answer: {question}","needs-answer-generic":"needs an answer","new-button":"New","no-permission":"You do not have permission to build rules or skills here. Ask an owner or admin for access.","pick-company":"Search your companies","pick-customer":"Search your customers","publish-error":"The rule was saved as a draft, but publishing failed. Try again from the editor.","publish-rule":"Publish rule","publish-skill":"Publish skill","question-unavailable":"Sorry, I do not have information about that.","resolved":"Resolved: {answer}","retry":"Try again","rule-draft-label":"Your rule so far","rule-example-1":"Tag Telegram customers as Premium","rule-example-2":"Send billing questions to the Billing team","rule-example-3":"Mark angry messages as high priority","rule-footer-caption":"Publishing turns it on right away. Not ready? Save it as a draft.","rule-intro-body":"Describe a rule in your own words. I will ask what I need, and it assembles on the right as we go.","rule-intro-title":"Tell me what should happen","rule-opening":"What should happen? Describe it in your own words.","save-draft":"Save as draft","scale-lock":"Scale plan","showcase-rules-body":"Fire instantly when something happens in your inbox, no conversation. For routing, labels, and priorities, like tagging Telegram customers.","showcase-rules-example-then":"add label","showcase-rules-example-when":"a thread starts","showcase-rules-title":"Rules","showcase-skills-body":"Your agent handles the whole conversation: asks questions, checks your systems, takes action. For requests that need judgment, like a refund.","showcase-skills-example-then":"{name} handles it","showcase-skills-example-when":"a refund is asked for","showcase-skills-title":"Skills","skeleton-hint":"The rule fills in here as we talk. Nothing goes live until you publish it.","skill-draft-label":"Your skill so far","skill-example-1":"Handle refund requests under our refund policy","skill-example-2":"Answer where-is-my-order questions with real tracking info","skill-example-3":"Collect bug reports and hand them to the team","skill-footer-caption":"Publishing runs one final check before it goes live. Not ready? Save it as a draft.","skill-intro-body":"Describe it in your own words. I will ask a few short questions and the skill takes shape on the right.","skill-intro-title":"Tell me what this skill handles","skill-opening":"What should this skill handle? Describe it in your own words.","sla":{"block-add-company":"Add company","block-add-customer":"Add customer","block-clock-calendar":"Calendar time, around the clock","block-clock-named":"Business hours, {name}","block-clock-workspace":"Business hours, workspace calendar","block-covers-label":"Covers","block-covers-note":"Threads from these get this promise. At least one company or customer stays required.","block-every-priority":"every priority","block-from-words":"From your words: {summary}","block-hours-title":"Working hours","block-ladder-title":"Warnings and escalation","block-name-title":"Name and coverage","block-needs-calendar-name":"Give the calendar a name.","block-needs-hours":"Finish the working hours step first.","block-needs-ladder":"One escalation step points at someone who is no longer here. Fix it to create the policy.","block-needs-name":"Give the policy a name.","block-needs-scope":"Pick at least one company or customer.","block-needs-target":"Set at least one target to create this policy.","block-remove-cover":"Remove {name}","block-review-after":"After a miss","block-rung-cap":"That is the most steps a policy can carry ({count}).","block-review-clock":"Clock","block-review-none":"None","block-review-note":"It goes first, ahead of your other policies, and turns on when you create it. Fine-tune anything later on its page.","block-review-promises":"Promises","block-review-steps":"{count} step | {count} steps","block-review-title":"Review","block-review-warnings":"Warnings","block-seeded-row":"{scope} {duration}","block-step-count":"Step {step} of {total}","block-summary":"Create {name}: {promises}, on {clock}.","block-targets-note":"Only the levels you set carry a promise. Leaving one empty is fine.","card-checking":"One moment, checking your SLA setup.","card-create":"Create policy","card-title":"New SLA policy","composite-created":"{name} is live. Now wiring it into the rule.","create-chip":"Create {name}","create-error":"The policy could not be created. Try again.","not-now":"Not now","numbers-unread":"I could not read a usable time from your message, so set the targets in the card.","offer-create":"Want me to set that policy up right here?","open-policy":"Open {name}","pure-published":"{name} is live. It sits first in your policy order and applies from the next message. You can open it here:","wall-chat-body":"A policy for specific customers picks up where your workspace promise leaves off, so your default SLA policy needs to be live first. It takes about a minute.","wall-cta":"Set up response targets","wall-keep-rule":"Keep building the rule"},"start-building":"Start building","unsupported-open-editor":"Open the rule editor","unsupported-retry":"Describe it differently","updated-rule":"Rule draft updated"}},"sandbox":{"back":"Back to {name}","composer-placeholder":"Reply as the customer","empty-description":"Every reply {name} gives gets a full readout here: policy, knowledge, tools, checks, and cost.","empty-title":"Say something as the customer","new-tag":"New","open":"Sandbox","origin-lesson":"Testing training rule {subject}","origin-lesson-held":"Rule held","origin-lesson-not-applicable":"Rule did not apply","origin-lesson-running":"Running scenario","origin-lesson-test-failed":"Test failed","origin-lesson-violated":"Rule violated","origin-policy":"Testing policy {subject} from the policy editor","origin-policy-matched":"Matched","origin-policy-waiting":"Waiting to match","origin-thread":"Rehearsal from {name}'s conversation #{number}","origin-thread-customer-fallback":"a customer","origin-thread-original-reply":"Original reply","origin-thread-original-reply-hint":"Sent in the real conversation. The reply on stage was regenerated with today's rules and knowledge, so it can differ.","origin-thread-replayed":"Reply regenerated","origin-thread-replaying":"Regenerating reply","reset":"Reset","rule-test-case":"Case {number}","rule-test-failed":"Could not evaluate","rule-test-followed":"Followed","rule-test-not-applicable":"Not applicable","rule-test-pending":"Waiting","rule-test-running":"Running","rule-test-violated":"Violated","stage-note":"Rehearsal · nothing here reaches customers","subtitle":"{workspace} · AI agent","turn-tab":"Turn {turn}"},"sentiment":{"analyzing":"Analyzing sentiment","negative":"Negative","neutral":"Neutral","positive":"Positive","very-negative":"Very negative","very-positive":"Very positive"},"settings":{"agents":{"add-keyword-placeholder":"Add a keyword and press Enter","agent-enabled":"Agent enabled","background-mode":"Background Mode","background-mode-description":"How the agent responds when customers send messages.","category":{"account":"Account","billing":"Billing","frustration":"Frustration","legal":"Legal"},"confidence-threshold":"Confidence Threshold","confidence-threshold-description":"Minimum confidence required for autonomous replies. Lower values allow more automatic responses.","custom-keywords":"Custom Keywords","danger-zone":{"confirm-description":"The agent will stop replying, drafting, and learning until you turn it back on.","confirm-title":"Turn off {name}?","description":"This shuts {name} down entirely. No replies, no drafts, no learning, and no background analysis. You can turn it back on whenever you like.","restore":"Start learning again","title":"Turn off completely","turn-off":"Turn off agent","turned-off":"{name} is turned off"},"description":"Configure AI agent behavior for your workspace.","emoji-usage":{"frequent":"Frequent","minimal":"Minimal","moderate":"Moderate","none":"None"},"escalation":"Escalation Detection","escalation-description":"Configure when the agent should escalate to a human.","escalation-enabled":"Enable escalation detection","escalation-enabled-description":"Detect keywords that indicate the customer needs human help.","handoff":{"add":"Add","add-phrase-placeholder":"Add a phrase","add-rule-placeholder":"Add a rule in plain language","auto-description":"When a rule matches, {name} stops replying, leaves a draft for your team, and flags the thread.","auto-title":"Hand off automatically","cancel":"Cancel","delete-rule":"Delete rule","description":"Choose when {name} stops and hands the conversation to your team.","edit-rule":"Edit rule","enter-to-add":"Enter to add","remove-phrase":"Remove {phrase}","rules-description":"Written in plain language. {name} applies them in any language the customer writes.","rules-title":"Rules {name} judges","save":"Save","title":"When to hand off","toggle-rule":"Toggle rule","tripwires-description":"Exact match, no judgment. For the few words that must always reach a human.","tripwires-title":"Always hand off on these phrases"},"identity":{"default-badge":"Default agent","edit-avatar":"Edit avatar and name","make-default":"Make default"},"keyword-categories":"Keyword Categories","knobs":{"emoji-usage":"Emoji Usage","empathy":"Empathy","empathy-description":"How much emotional understanding the agent shows.","formality":"Formality","formality-description":"How formal or casual the agent sounds.","response-length":"Response Length","system-prompt":"System Prompt","system-prompt-description":"The primary instruction that shapes the agent's personality.","system-prompt-placeholder":"You are a customer support assistant..."},"learning-activity":{"empty":"Nothing learned yet. Activity shows up here as conversations come in.","feedback-lessons-plural":"{count} feedback lesson | {count} feedback lessons","gap-scans-plural":"{count} knowledge gap scan | {count} knowledge gap scans","last-activity":"Last activity {time}","memory-refreshes-plural":"{count} memory refresh | {count} memory refreshes","title":"Learning quietly in the background"},"memory":{"add":"Add","added-by-you":"Added by you","cancel":"Cancel","category":{"about":"About","contact":"Contact","escalation":"Escalation","hours":"Hours","identity":"Identity","offerings":"Offerings","other":"Other","policies":"Policies","pricing":"Pricing"},"checked":"Checked {time}","composer-label":"Teach {agent} a fact","delete":"Delete fact","delete-cancel":"Cancel","delete-confirm":"Delete fact","delete-description":"{agent} will stop keeping this in mind, and it will not come back from the knowledge base.","delete-failed":"Could not delete the fact. Try again.","delete-title":"Delete this fact?","description":"Short facts {agent} keeps in mind for every reply, refreshed from your knowledge base.","example":{"about-shop":"A family-run bike shop in Ghent.","about-store":"Sells refurbished espresso machines online.","contact-email":"Support email: help{'@'}yourstore.com.","contact-phone":"Phone support at +374 10 585 985.","hours-holidays":"Closed on public holidays.","hours-weekdays":"Open Mon to Fri, 9:00 to 18:00."},"from-settings":"From settings","hours-all-day":"open 24 hours","hours-closed":"closed","learns-hint":"After each knowledge change, facts it can back with a source quote appear here, like:","learns-title":"{agent} learns your business","set-in-settings":"Set in your workspace business hours settings.","digest-description":"Facts {agent} distills from your knowledge base and keeps in mind for every reply. Each one is backed by a source article.","digest-empty-description":"Facts appear here automatically as {agent} reads your knowledge base. Add or edit articles and the memory refreshes on its own.","edit":"Edit fact","edit-source":"Edit source article","empty-description":"Facts appear here as your knowledge base syncs. You can also teach {agent} directly, starting with the basics:","empty-title":"{agent} hasn't memorized anything yet","enter-to-save":"Enter to save","fact-count":"{count} fact | {count} facts","hide-quote":"Hide source quote","pin":"Pin so automatic refreshes never change it","pinned-label":"Pinned","placeholder":{"escalation":"e.g. Billing disputes always go to a human","hours":"e.g. Open Mon to Fri, 9:00 to 17:30, closed bank holidays","identity":"e.g. We are a family-run bike shop in Leeds","offerings":"e.g. We sell three subscription plans and gift boxes","other":"Teach {agent} a fact","policies":"e.g. Refunds: 30 days, full, no questions","pricing":"e.g. Starter is $12/month, annual gets 2 months free"},"save":"Save","select-category":"Select category","show-quote":"Show source quote","source":"From {title}","starter":{"escalation":"When to hand off","hours":"Business hours","offerings":"What you offer","policies":"Refund policy"},"sync-label":"{facts} · {synced}","synced":"Synced {time}","title":"What {agent} knows","unpin":"Unpin","verified":"Verified {time}","waiting-sync":"Waiting for first sync"},"mode":{"autonomous":"Autonomous mode","autonomous-description":"Automatically replies to customers when confident. Escalates when unsure.","autonomous-warning":"In autonomous mode, the agent will send replies directly to customers without human review when it is confident in its response.","copilot":"Assistant mode","copilot-description":"Will write replies automatically - but they need to be checked by a human before sending.","off":"On demand mode","off-description":"Only writes replies when asked to by clicking the \"AI Reply\" button","option-autopilot":"Autopilot","option-autopilot-description":"Replies to customers on their own and escalates to your team when unsure.","option-autopilot-warning":"On Autopilot, the agent sends replies directly to customers without human review when it is confident in its response.","option-learning":"Learning","option-learning-description":"Watches conversations and builds knowledge. Never replies to customers.","option-off":"Off","option-off-description":"No AI anywhere. Slash commands, the operator chat, and auto-replies are all disabled.","option-on-demand":"On demand","option-on-demand-description":"Helps when asked. Slash commands, drafts, and the operator chat stay available.","recommended":"Recommended"},"personality":"Personality","personality-description":"Control how the agent communicates with customers.","personality-preset":{"builtin-badge":"Built-in","create-custom":"Create custom personality","description-label":"Description","description-placeholder":"A brief description of this personality","name-label":"Name","name-placeholder":"e.g. Empathetic"},"preview":{"description":"Test how the agent responds with the current personality settings.","generate":"Preview","generating":"Generating...","response-label":"Agent would say:","test-message-placeholder":"Type a sample customer message...","title":"Live Preview"},"response-length":{"brief":"Brief","concise":"Concise","conversational":"Conversational","detailed":"Detailed"},"title":"AI Agents","tone":{"band-0":"Technical","band-1":"Leans technical","band-2":"Balanced","band-3":"Leans warm","band-4":"Empathetic","description":"How {name} talks to customers. Both ends are equally capable, they just sound different.","pole-empathetic":"Empathetic","pole-technical":"Technical","preview-band-0":"Your card on file expired on 05/24, which is why the invoice failed. Update it under Billing, then Payment methods, and the retry will go through within the hour.","preview-band-1":"The invoice failed because the card on file expired. Update it under Billing, then Payment methods, and the retry will go through within the hour.","preview-band-2":"Thanks for flagging this. The card on file expired, which is why the payment failed. Once you update it under Billing, then Payment methods, the retry will go through within the hour.","preview-band-3":"Sorry about the surprise! The card on file expired, which made the payment fail. Update it under Billing, then Payment methods, and everything will sort itself out within the hour.","preview-band-4":"Oh no, sorry the failed payment caught you off guard! It looks like the card on file expired. If you pop a new one into Billing, then Payment methods, it will sort itself out within the hour. I am here if anything still looks odd.","preview-label":"Preview","title":"Tone"}},"billing":{"add":"Add","ai-limit":{"message":"You have used your AI replies for this period. Upgrade to keep using AI assist.","trial-message":"Your trial has ended, so the AI is paused. Upgrade to keep using AI assist.","upgrade":"Upgrade"},"banner":{"enforced":{"description":"Your AI is handing new conversations to your team until the period resets. Nothing is blocked or billed.","title":"Limit reached for this period"},"grace":{"description":"Your grace month is active. We never charge for going over, and your AI keeps working.","title":"You are over your plan, on us"},"past-due":{"cta":"Update payment","description":"Your last payment did not go through. Update your card to keep your plan active.","title":"Payment needs attention"},"trial-no-card":{"cta":"Add card","description":"Add a card to keep {plan} after your trial. You won't be charged until the trial ends.","title":"Your free trial ends {date}"},"upgrade":"Upgrade to {tier}"},"cancel-dialog":{"confirm":"Cancel plan","description":"Your plan stays active until {date}. After that it will not renew and your workspace moves to Free. You can undo this any time before then.","description-generic":"Your plan stays active until the end of the current period. After that it will not renew and your workspace moves to Free. You can undo this any time before then.","error":"Could not cancel your plan. Please try again.","keep":"Keep plan","title":"Cancel your plan?"},"card":{"description":"Add or replace the card used for your subscription. Your card details are handled securely by Stripe.","error":"Could not save your card. Please try again.","not-configured":"Card payments are not set up for this workspace yet.","save":"Save card","title":"Payment method"},"checkout-confirm":{"continue":"Continue to checkout","description":"Here's what you unlock. Payment is handled securely on the next step.","error":"Could not start checkout. Please try again.","note":"You'll be taken to Stripe to complete payment, with nothing charged until you confirm there."},"checkout-success":{"cta":"Let's go","description":"Thanks for upgrading to Gruvi. Your AI just got a lot more room to work.","kicker":"Your AI team just grew","plus":"Plus {features}.","title":"You're on {tier}","unit-operator-chats":"operator chats / mo","unit-threads":"threads / mo"},"complimentary":{"dismiss":"Got it","eyebrow":"Complimentary","no-card":"No card needed. We'll remind you before it ends, and nothing is charged unless you choose to continue.","normally":"Normally","sign-off":"Enjoy it, and tell us how it goes.","subtitle":"It's already live in your workspace and runs through {date}.","title":"You're on {plan} for {months} months, on us","you-pay":"You pay"},"current-plan":{"all-plans":"All plans","cancel":"Cancel plan","cancel-note":"Your plan ends on {date} and will not renew.","free":"Free","free-note":"Your starting plan. Choose a plan to unlock more.","manage":"Manage","next-renewal":"Renews {date} for {amount}","pick-plan":"Pick a plan","scheduled-cancel":"Your plan will be canceled on {date}.","scheduled-change":"Moving to {tier} on {date}.","switch-plan":"Switch plan","switch-to-annual":"Switch to annual","switch-to-monthly":"Switch to monthly","title":"Current plan","trial":"Trial","trial-ends":"Trial ends {date}","undo":"Undo","undo-error":"Could not undo the scheduled change. Please try again.","upgrade-to":"Upgrade to {tier}","view-invoices":"View invoices"},"description":"Manage your plan, usage, and billing details.","details-dialog":{"address-label":"Billing address","city-placeholder":"City","country-placeholder":"Country","description":"Update the email, name, and address shown on your invoices.","email-label":"Billing email","email-placeholder":"billing{'@'}company.com","error":"Could not save your billing details. Please try again.","line1-placeholder":"Address line 1","line2-placeholder":"Address line 2","name-label":"Name","name-placeholder":"Company or full name","postal-placeholder":"Postal code","state-placeholder":"State or region","title":"Billing details"},"details":{"billing-email":{"empty":"No billing email on file","label":"Billing email"},"payment-method":{"card":"{brand} ending in {last4}","empty":"No payment method on file","label":"Payment method","manage":"Manage"},"tax-id":{"empty":"No tax identifier on file","label":"Tax identifier","present":"Tax identifier on file"},"title":"Billing details"},"edit":"Edit","interval":{"month":"Billed monthly","year":"Billed annually"},"invoices-page":{"back":"Back to billing","description":"Your billing history.","title":"Invoices"},"invoices":{"empty":"No invoices yet.","line-item":"Subscription","load-more":"Load more","more":"More invoices","number":"Invoice {number}","pay":"Pay","pdf":"PDF","status":{"draft":"Draft","open":"Unpaid","paid":"Paid","uncollectible":"Unpaid","void":"Void"},"title":"Recent invoices","view":"View invoice","view-all":"View all"},"meters":{"operator-chats":{"label":"Operator chats"},"threads":{"label":"Threads"}},"page-title":"Plans & billing","plan-change":{"charged-now":"Charged now","confirm-downgrade":"Confirm change","confirm-upgrade":"Confirm and pay","crossgrade-note":"This change takes effect immediately at no extra cost.","current":"Current","description":"Review your plan change before you confirm.","downgrade-effective":"Takes effect on {date}. No charge now.","downgrade-note":"Your current plan stays active until then. You can undo this any time before it takes effect, and nothing is charged or refunded.","error":"Could not change your plan. Please try again.","feature-add":"{feature}","limit-delta":"{label}: {from} to {to}","new":"New","payment-failed":"Your payment did not go through. Update your card and try again.","preview-error":"We could not load the details for this change. Please try again.","then-renews":"Then {amount} from {date}.","title":"Change your plan","title-crossgrade":"Switch to {plan}","title-downgrade":"Change to {tier}","title-upgrade":"Upgrade to {tier}","trial-switch-note":"Your free trial keeps running on the new plan. Nothing is charged today.","try-again":"Try again","update-card":"Update card","upgrade-charge":"You will be charged {amount} now.","upgrade-note":"This change takes effect immediately and is charged to the card on file, prorated for the rest of this period.","what-you-get":"What you get"},"plans-section-title":"Change your plan","tax-dialog":{"country-label":"Country","description":"Add a tax identifier to your invoices. We will validate it with Stripe.","error":"Could not save your tax identifier. Please check the value and try again.","remove":"Remove","title":"Tax identifier","type-label":"Tax ID type","value-hint":"Enter the value in the format shown for your country.","value-label":"Value","value-placeholder":"Enter your tax identifier"},"title":"Billing","upgrade-card":{"cta":"Upgrade to {tier}","description":"Based on your usage this period, {tier} gives you more headroom.","feature-delta":"Plus {feature}","limit-delta":"{label}: {from} to {to}","title":"Room to grow"},"usage":{"caption":{"approaching":"You are close to your included amount for this period.","enforced":"Limit reached. Your AI is handing new conversations to your team until the period resets.","grace-active":"You are over your plan, up to {ceiling} this period on us.","over-ceiling":"You have used your full grace for this period. Nothing is blocked or billed.","within-cap":"Included in your plan this period."},"fraction":"{used} of {total}","grace-extra":"+{count} grace, on us","grace-label":"Grace, on us","grace-spent":"Grace used","operator-chats-tooltip":"When you chat with your AI agents in their own window, outside a customer ticket. Internal AI tasks count here too.","paused":{"features":{"ai-compose":"AI compose (reply, rewrite, translate, summarize)","ai-replies":"AI replies to customers","new-operator-chats":"New operator chats","operator-copilot":"Operator copilot","titles-sentiment":"Thread titles and sentiment","your-team":"Your team replies as normal"},"paused-label":"Paused","running-label":"Still running","title":"AI is paused until {date}","title-generic":"AI is paused for the rest of this period","title-trial-ended":"AI is paused. Pick a plan to turn it back on"},"period":"Usage from {start} to {end}","period-range":"{start} – {end}","reset":"Resets {date}","status":{"approaching":"Approaching your limit","grace-spent":"Grace almost gone","in-grace":"In grace, on us","limit-reached":"Limit reached this month","on-track":"On track","trial-ended":"Trial ended"},"this-month":"This month","threads-bar-tooltip":"The bar tracks your threads, the limit you reach first. When you run out, your grace allowance picks up, on us, and your AI keeps working.","threads-heading":"Threads this month","threads-tooltip":"Every customer request in your inbox is a thread. Spam does not count.","title":"Usage this period"}},"blocked-customers":{"column-blocked-at":"Blocked at","column-blocked-by":"Blocked by","column-customer":"Customer","column-reason":"Reason","description":"Manage customers that have been blocked from your workspace.","empty-description":"Blocked customers will appear here. You can block customers from the inbox via the command palette or thread actions.","empty-title":"No blocked customers","no-reason":"No reason provided","row-blocked-by":"Blocked by {name}","title":"Blocked Customers","unblock":"Unblock","unblock-confirm-description":"Are you sure you want to unblock {name}? They will be able to send messages again. Previously deleted threads will not be restored.","unblock-confirm-title":"Unblock customer","unknown-blocked-by":"Unknown","unknown-customer":"Unknown customer"},"composer":{"description":"What the reply box offers your team.","title":"Composer","voice":{"description":"What teammates can do with their voice.","title":"Voice"},"transcribe-speech":"Transcribe my speech","transcribe-speech-description":"Teammates can speak instead of typing.","voice-messages":"Voice messages","voice-messages-description":"Teammates can send voice messages to customers."},"canned-replies":{"all-categories":"All","archive-category-confirm":"Are you sure you want to archive this category and all its replies?","archive-confirm":"Are you sure you want to archive this reply?","columns":{"category":"Category","created-by":"Created By","last-edited":"Last Edited","shortcode":"Shortcode","title":"Title"},"create-first-reply":"Create First Reply","description":"Manage pre-written response templates for your team.","dialog-description":"Write it once, reuse it everywhere. Add a shortcode for quick access and variables for a personal touch.","duplicate-reply":"Duplicate","duplicate-title":"Copy of {title}","edit-reply":"Edit Reply","empty-description":"Create reusable templates with /shortcodes for quick access and {'{{'}variables{'}}'} for personalization.","empty-title":"No canned replies yet","form":{"category":"Category","category-create":"Create \"{name}\"","category-placeholder":"Search or create category...","content":"Content","content-placeholder":"Write your reply template...","preview":"Preview","preview-hint":"Sample data","shortcode":"Shortcode","shortcode-hint":"Type /{shortcode} in the composer for quick access","shortcode-placeholder":"e.g. refund-approved","title":"Title","title-placeholder":"e.g. Refund, approved","variables-button":"Insert variable","variables-hint":"Use variables like {'{{'}customer.name{'}}'} or {'{{'}agent.firstName{'}}'} to personalize."},"new-reply":"New Reply","no-results":"No canned replies found","search-placeholder":"Search replies...","title":"Canned Replies","toast":{"archive-error":"Failed to delete the reply","save-error":"Failed to save the reply"},"uncategorized":"Uncategorized","variables":{"agent":"Agent","agent.firstName":"First name","agent.name":"Full name","customer":"Customer","customer.email":"Email address","customer.firstName":"First name","customer.name":"Display name","thread":"Thread","thread.number":"Thread number","workspace":"Workspace","workspace.name":"Workspace name"},"welcome":{"create-reply":"Create your first reply","step-1-description":"Save the answers you type every day, like refund policies or shipping times.","step-1-title":"Write a reply once","step-2-description":"Type # in the composer and the full reply drops in instantly.","step-2-title":"Give it a shortcode","step-3-description":"Placeholders like the customer's name fill in automatically on every send.","step-3-title":"Personalize with variables","title":"It's easy to build your reply library","wizard-hint":"Replies are shared with your whole team."}},"customer-satisfaction":{"comment-description":"Allow customers to leave optional text feedback with their rating.","comment-title":"Show comment field","description":"Configure the CSAT survey shown to customers when a thread is resolved.","email-description":"Ask anonymous customers for their email address after rating.","email-title":"Show email capture","enable-description":"Show a satisfaction survey after threads are resolved.","enable-title":"Enable CSAT","name":"Customer Satisfaction","save-error":"Failed to save CSAT settings"},"danger-zone":{"delete":"Delete workspace","delete-description":"Permanently delete this workspace and all its data.","delete-dialog":{"confirm-prompt":"Type the following to permanently delete:","description":"This action is permanent and cannot be undone. All data, members, and settings will be permanently deleted.","title":"Delete Workspace"},"delete-error":"Failed to delete workspace. Please try again.","description":"Irreversible and destructive actions.","suspend":"Suspend workspace","suspend-description":"Temporarily disable this workspace. You can reactivate it later.","suspend-dialog":{"confirm-prompt":"Type the following to confirm:","description":"This will temporarily disable your workspace. Members will lose access until you reactivate it.","title":"Suspend Workspace"},"suspend-error":"Failed to suspend workspace. Please try again.","title":"Danger zone"},"email":{"description":"Manage email addresses where customers can reach you","detail":{"authentication":{"alias-description":"Gruvi manages email security for this address.","badge-failed":"Verification failed","badge-managed":"Managed by Gruvi","badge-not-started":"Not started","badge-verified":"Verified","badge-verifying":"Verifying","check-now":"Check now","copy-all":"Copy all","copy-all-copied":"Copied","forwarding-failed-description":"DKIM verification failed. Re-publish the records below and re-check.","forwarding-pending-description":"We are waiting for DNS to propagate. This usually takes a few minutes.","forwarding-records-help":"Add the following records at the DNS provider for {domain}. We will keep checking automatically.","forwarding-verified-description":"DKIM is set up. Outbound mail from this channel is signed.","hide-records":"Hide records","last-checked":"Last checked {time}","last-verified":"verified {time} ago","never-checked":"never","not-started-description":"Domain verification has not been started for this channel.","not-started-help":"Generate the DNS records for {domain} and start DKIM verification.","records-heading":"DNS records","send-dialog":{"description":"Email the records and a verification link to whoever manages your DNS.","email-label":"Developer email","email-placeholder":"developer{'@'}yourcompany.com","send-button":"Send","sending":"Sending…","sent":"Sent","title":"Send DNS records to your developer"},"send-to-developer":"Send to developer","show-records":"Show DNS records","start-verification":"Start verification","title":"Security"},"auto-reply":{"description":"Control whether your AI agent replies to incoming emails in this channel.","fallback-name":"AI","title":"AI auto-replies","toggle":"{name} replies here","toggle-description":"Turn off to keep this channel human-only."},"danger":{"delete-button":"Delete channel","delete-confirm-description":"This will permanently disable the channel. Existing threads remain accessible but new messages cannot be received or sent.","delete-confirm-prompt":"Type {name} to confirm:","delete-confirm-title":"Delete this email channel?","delete-description":"Soft-delete this channel. Threads remain accessible but new messages stop.","delete-title":"Delete this channel","title":"Danger zone"},"domain":{"de-verified-description":"DKIM verification was lost. Sending is paused until you re-publish the records below. Last verified {time} ago.","de-verified-title":"DKIM verification lost","last-checked":"Last checked: {time}","last-verified":"last verified: {time} ago","platform-bullet-dkim":"DKIM signed by Gruvi for every outbound message","platform-bullet-dmarc":"DMARC reporting handled by Gruvi","platform-bullet-spf":"SPF authorized for the platform sending domain","platform-description":"This channel uses a Gruvi-hosted address, so DKIM, SPF, and DMARC are managed for you.","platform-included-title":"Included with the platform domain","platform-title":"Authentication is handled by Gruvi","re-verify":"Re-verify","records-heading":"DNS records","refresh":"Refresh status"},"from-name":{"custom-helper":"This becomes the full sender name customers see. No workspace name is added.","custom-placeholder":"e.g. Support team","description":"What customers see as the sender.","label":"From name","preset-custom":"Custom name","preset-custom-desc":"Use a fixed sender label regardless of who replies.","preset-first-name":"Agent's first name","preset-first-name-desc":"Shows as \"John from Acme\".","preset-full-name":"Agent's full name","preset-full-name-desc":"Shows as \"John Smith from Acme\". Default.","preset-workspace-only":"Workspace only","preset-workspace-only-desc":"Hide the agent's name entirely.","preview-example-first-name":"John","preview-example-full-name":"John Smith","preview-label":"How customers see it","title":"From name"},"go-back":"Go back","identity":{"channel-name":"Channel name","copied":"Address copied","copy":"Copy address","created-at":"Created","created-meta":"Created {date}","description":"These values are set when the channel is created and cannot be changed.","description-alias":"Customers reach you at this address.","description-forwarding":"We send and receive mail on behalf of your domain.","inbox-alias":"Inbox alias","sending-domain":"Sending domain","title":"Channel identity","type-email":"Email"},"loading-title":"Email channel","mailbox":{"description":"Gruvi signs in to this mailbox and reads the mail that arrives.","folder-description":"The folder new mail arrives in.","folder-label":"Folder","host-description":"Your mail provider lists this as the IMAP server.","host-label":"Incoming mail server","password-label":"Password","password-note":"Gruvi saved this and never shows it again.","password-replace":"Replace","port-label":"Port","title":"Mailbox","tls-description":"Keep this on unless your provider tells you otherwise.","tls-label":"Use TLS","username-label":"Username"},"not-found":"This email channel was not found","post-chat":{"description":"Email the customer a satisfaction survey after the conversation is resolved.","enabled-description":"Send the survey email when an agent resolves the conversation.","enabled-title":"Enable post-chat survey","intro-message":"Prompt message","intro-message-description":"Heading shown on the survey page before the customer rates.","submit-label":"Submit button label","submit-label-description":"Button that submits written feedback.","thank-you-message":"Thank-you message","thank-you-message-description":"Heading shown after the customer rates.","title":"Post-chat survey"},"signature":{"char-count":"{count} / {max} characters","coming-soon":"Coming soon","description":"Appended to outbound customer emails for every channel in this workspace.","label":"Workspace email signature","near-limit":"Approaching limit","placeholder":"Acme Support\nWeb: acme.com","preview-label":"Preview","save-error":"Save failed","save-saved":"Saved","save-saving":"Saving","title":"Workspace signature"},"status-label":"Status","status":{"activate":"Activate","description-active":"This channel is live, receiving inbound, and able to send outbound.","description-disconnected":"This channel was disconnected. Reconnect to resume.","description-error":"We hit an error sending outbound. Check the Domain tab for details.","description-paused":"This channel is paused. Inbound is not delivered, outbound is blocked.","pause":"Pause","resume":"Resume","title":"Channel status"},"suppressions":{"filter":{"reason":{"bounce-hard":"Hard bounce","bounce-soft-repeated":"Repeated soft bounce","complaint":"Spam complaint","manual-block":"Manually blocked"}}}},"dns-row":{"copy-row":"Copy row","name-label":"Name","row-copied":"Copied","value-label":"Value"},"list":{"activates-automatically":"activates automatically","created-on":"Created {date}","finishing-setup":"Finishing setup","verification-failed":"Verification timed out","verifying":"Verifying inbox..."},"mail-provider-selector":{"cloudflare":"Cloudflare Email Routing","gmail":"Gmail","label":"Mail provider","other":"Other","outlook":"Outlook","workmail":"AWS WorkMail"},"sections":{"danger":"Danger zone","overview":"Overview","post-chat":"Post-chat","sending":"Sending"},"status":{"active":"Active","disconnected":"Disconnected","error":"Error","paused":"Paused"},"title":"Email channels","welcome":{"add-channel":"Add email channel","step-1-description":"Use your own support address or a Gruvi-provided one.","step-1-title":"Pick how customers email you","step-2-description":"We'll show you how. Takes about 2 minutes for most providers.","step-2-title":"Set up forwarding","step-3-description":"One DNS step so replies come from your address, not Gruvi's.","step-3-title":"Authenticate your domain","title":"It's easy to set up email.","wizard-hint":"Our Gruvi setup wizard will guide you through."},"wizard":{"activate":{"description-failed":"Verification didn't complete in the expected window. DNS sometimes takes longer than usual; click Re-check to try again.","description-pending":"We'll notify you the moment it's ready.","error-title":"Activation failed","failed-detail-forwarding":"We didn't see our test email come back through your forwarding rule. Double-check the rule at your mail provider and try again.","failed-detail-short":"Verification didn't complete in the expected window. Try again, this almost always clears up on a re-check.","headline-failed":"Verification timed out","headline-pending":"Setting up your inbox","recheck":"Re-check now","row-config":"Linking configuration","row-dkim":"Telling email providers","row-dkim-hint":"Hang tight, this usually takes a minute or two.","row-forwarding":"Confirming customer mail reaches us","row-forwarding-hint":"Sending a test through your forwarding rule. Can take up to a minute.","row-forwarding-watching":"Still watching for the test mail. Your channel is live, and this turns green on its own once forwarding kicks in.","row-identity":"Reserving subdomain"},"address":{"custom-local-part-description":"The part before the {'@'}. Defaults to your channel name if left blank.","custom-local-part-label":"Sending address local part","description":"Pick a short, simple name. Customers will email this address.","description-additional":"Pick a short label. We'll add it as a suffix on your email.","description-first":"Customers can email this address. Everything they send lands in Gruvi.","domain-description":"The domain you own. We will give you DNS records to publish in the next step.","domain-label":"Sending domain","domain-placeholder":"acme.com","errors":{"domain-invalid":"Enter a valid domain (for example, acme.com)","domain-reserved":"Use a domain you own, not a Gruvi domain","local-part-invalid":"Use letters, numbers, dots, hyphens, or underscores","name-invalid-format":"Use lowercase letters, numbers, dots, or hyphens (must start and end with a letter or number)","name-reserved":"This name is reserved","name-taken":"A channel with this name already exists","name-too-long":"Name must be 64 characters or fewer","name-too-short":"Name must be at least 1 character"},"from-name-description":"Customers see this in the sender line. Defaults to your workspace name.","from-name-label":"Display name","from-name-placeholder":"Acme Support","local-part-description":"The part before the {'@'}. Defaults to support.","local-part-label":"Email prefix","name-description":"Lowercase letters, numbers, and hyphens. 2 to 40 characters.","name-description-friendly-additional":"We'll use this as the suffix on your email.","name-description-friendly-first":"Just for your reference. Agents see this name in Gruvi.","name-label":"Channel name","name-label-friendly":"What should we call it?","name-lock-description":"The inbox alias cannot be renamed once the channel is created. You can pause or replace it later.","name-lock-title":"Channel name is permanent","name-placeholder":"support","permanence-description-additional":"Once you continue, this name locks into the email. You can pause or replace the inbox later.","permanence-description-first":"Once you continue, your workspace slug locks into the email. You can pause this inbox later but the address can't be renamed.","permanence-title":"Heads up, this is permanent","preview-forwarding-note":"Inbound mail will forward to {alias} for processing. Setup in the next step.","preview-label":"Customers will email","preview-label-customer-facing":"Customers will see emails from","slug-lock-description":"Your workspace slug ({slug}) becomes the dedicated email subdomain for this channel and cannot be changed.","slug-lock-title":"Workspace slug locks after this step","title":"Configure your inbox address","title-additional":"Add another inbox","title-first":"Here's your support email"},"display-name":{"description":"What customers see in their inbox when you reply.","errors":{"required":"Add a display name."},"label":"Display name","preview-label":"From","title":"How should it look in their inbox?"},"dkim":{"advanced-toggle":"Advanced settings","check-now":"Check now","cname-heading":"Add this CNAME on your DNS","copy-all":"Copy all","copy-all-copied":"Copied!","description":"Add these DNS records on your domain registrar so customer emails can be sent from your domain.","description-friendly":"Add one record on your DNS so messages from your domain are signed correctly. We handle the rest.","dmarc-heading":"DMARC (optional but recommended)","last-checked":"Last checked: {time}","mail-from-apply":"Apply","mail-from-description":"Recommended for best deliverability. Replaces the AWS sender path with a subdomain you own.","mail-from-records-heading":"Then publish these on the same subdomain","mail-from-subdomain-help":"Usually a fresh subdomain like mail.{domain}. Whatever you pick, point its MX and TXT records as shown below.","mail-from-subdomain-label":"Mail subdomain","mail-from-title":"Use a custom sender path","never-checked":"not yet","records-description":"Add these DNS records to your domain so messages are signed and bounces route back to us. We handle everything else.","records-heading":"DKIM records","records-heading-friendly":"Add these records to your DNS","send-to-developer":"Send these to your developer","send-to-developer-button":"Send","send-to-developer-description":"Email the records and a verification link to whoever manages your DNS.","send-to-developer-placeholder":"developer{'@'}yourcompany.com","send-to-developer-sending":"Sending…","send-to-developer-sent":"Sent","status":{"failed-description":"Check the DNS records again on your registrar. Once they propagate, click Check now.","failed-title":"Verification failed","verified-description":"Your domain is verified. You can activate the channel.","verified-title":"Domain verified","verifying-description":"DNS propagation can take several minutes to a few hours. We will refresh automatically.","verifying-title":"Waiting for DNS to propagate"},"title":"Verify your domain","title-friendly":"Hook up your DNS"},"done":"Done","done-step":{"description":"Customers can now send mail to your new address.","title":"Your inbox is live"},"email-address":{"description":"Use the address customers already write to. We'll route mail through Gruvi without changing what they see.","errors":{"invalid":"That doesn't look like a valid email address.","reserved-domain":"This domain is reserved. Use your own."},"label":"Support email","placeholder":"name{'@'}yourdomain.com","title":"What's your support email?"},"forwarding":{"cant-verify-description":"Forwarding is configured on your mail server. Gruvi cannot test it directly. Send a test email to confirm everything works.","cant-verify-title":"We cannot verify forwarding for you","choose-provider":"Pick your provider for setup steps","copied":"Copied","copy":"Copy","description":"Forward incoming mail from your domain to this Gruvi inbox so customer messages reach the thread.","description-friendly":"Add this address as a forwarding target in your mail provider so customer messages reach Gruvi.","instructions-prompt":"Not sure where to set this up?","providers":{"cloudflare":{"gate":"**Cloudflare emails a verification link to the Gruvi address first.** It lands in your Gruvi inbox. Until you open it and click the link, the routing rule stays switched off.","step-1":"In the Cloudflare dashboard, open `Compute → Email Service → Email Routing` and onboard your domain. Cloudflare adds the MX, SPF and DKIM records for you.","step-2":"Under **Destination addresses**, add the Gruvi address, then open Cloudflare's verification mail in Gruvi and click its link.","step-3":"Under **Routing rules**, add a custom address rule sending your support address to that destination, then save.","subtitle":"Needs your domain on Cloudflare DNS","title":"Cloudflare Email Routing"},"gmail":{"domain-note":"Google can take up to **24 hours** to apply a routing rule. If the check is still waiting, the rule is probably still rolling out, not wrong.","domain-step-1":"In the Google Admin console, open `Apps → Google Workspace → Gmail → Default routing`","domain-step-2":"Add a rule matching your support address as the envelope recipient, then under Modify message choose **Add more recipients** and paste the Gruvi address.","domain-step-3":"Leave **Also deliver to original recipient** on so your mailbox keeps its copy, then save.","mailbox-gate":"**Google sends a confirmation code to the Gruvi address.** It lands in your Gruvi inbox as a thread from Google. Open it there to read the code.","mailbox-step-1":"In Gmail, open `Settings → See all settings → Forwarding and POP/IMAP`","mailbox-step-2":"Click **Add a forwarding address**, paste the Gruvi address, then read the code from the thread in Gruvi and confirm.","mailbox-step-3":"Select **Forward a copy of incoming mail to** it, then save changes.","path-domain":"Whole domain","path-mailbox":"One mailbox","subtitle":"Two paths, and the right one depends on who you are","title":"Gmail / Google Workspace"},"island-label":"Forward mail to","lead":"Pick where your support mail lives today. Each path ends back here, on the verify button.","other":{"step-1":"In your mail admin, find **Forwarding**, **Aliases** or **Redirects**.","step-2":"Forward your support address to the Gruvi address, keeping a copy in the mailbox if the option exists.","step-3":"If your provider emails a confirmation code to the destination, look for that thread in your Gruvi inbox.","subtitle":"Fastmail, Proton, cPanel, your own server","title":"Another mail provider"},"outlook":{"domain-gate":"**Microsoft blocks forwarding to outside addresses by default.** An admin has to allow it first, or mail bounces with 550 5.7.520.","domain-step-1":"In the Microsoft Defender portal, open `Email & collaboration → Policies & rules → Threat policies → Anti-spam`, edit the outbound policy, and set **Automatic forwarding** to On.","domain-step-2":"In the Exchange admin center, open `Recipients → Mailboxes`, pick your support mailbox, and under **Mail flow** set forwarding to the Gruvi address.","domain-step-3":"Keep **Deliver message to both** on so the mailbox still gets its copy, then save.","mailbox-step-1":"In Outlook on the web, open `Settings → Mail → Forwarding`","mailbox-step-2":"Tick **Enable forwarding** and paste the Gruvi address.","mailbox-step-3":"Tick **Keep a copy of forwarded messages**, then save.","path-domain":"Microsoft 365","path-mailbox":"Outlook.com","subtitle":"Blocked by default on business tenants","title":"Outlook / Microsoft 365"},"recommended":"best","return-beat":"Then come back here and hit **Verify automatic forwarding**.","return-beat-lead":"Then come back here and hit **Verify automatic forwarding**. We send a test mail to your address and watch for it to arrive.","zoho":{"gate":"**Zoho sends a confirmation code to the Gruvi address**, which arrives in your Gruvi inbox. Forwarding is also not available on Zoho's free plan.","step-1":"In the Zoho Mail Admin Console, open `Users` and pick your support user.","step-2":"Open `Mailbox Settings → Email Forwarding`, paste the Gruvi address and add it.","step-3":"Read the code from the thread in Gruvi, click **Verify** next to the address, and confirm.","subtitle":"Paid plans only","title":"Zoho Mail"}},"see-instructions":"See instructions","sheet":{"description":"Pick your mail provider for step-by-step setup.","title":"Setup instructions"},"target-label":"Forward incoming mail to","title":"Set up email forwarding","title-friendly":"Forward your support mail to Gruvi","verify":{"button-resend":"Send another test","button-start":"Verify automatic forwarding","button-waiting":"Watching for the test mail","idle-description":"We'll send a test mail and watch for it to come back through your forwarding rule.","idle-title":"Test the forwarding round-trip","slow-description":"Nothing back yet. Some providers take a while to apply a new rule, Google Workspace routing up to 24 hours. Carry on and we'll keep checking.","slow-title":"Still watching","verified-description":"Customer mail will reach Gruvi.","verified-title":"Forwarding verified","waiting-description":"Test mail sent. This turns green the moment it forwards back to Gruvi.","waiting-title":"Watching for the test mail"}},"mailbox":{"address":{"description":"Gruvi reads the mail in this mailbox and replies from the same address.","errors":{"invalid":"That does not look like a valid email address.","taken":"This mailbox is already connected to another channel."},"label":"Mailbox address","placeholder":"support{'@'}acme.com","preview-label":"Customers will email","title":"Which address do customers write to?"},"done":{"cadence":"Gruvi checks this mailbox every minute."},"incoming":{"check":"Check connection","checking":"Checking","description":"Gruvi signs in with these details and reads the mail that arrives.","errors":{"folder-missing":"That folder is not in this mailbox.","host-not-allowed":"This mail server cannot be used. Ask your administrator to allow it.","port-invalid":"Enter a port number between 1 and 65535.","required":"Fill this in.","sign-in":"Could not sign in. Check the username and password.","tls":"Could not open a secure connection. Check the port and TLS setting.","unreachable":"Could not reach the server. Check the address and port."},"folder-description":"The folder new mail arrives in.","folder-label":"Folder","folder-note":"Gruvi reads the mail that arrives from now on. Mail already in the folder stays as it is.","host-description":"Your mail provider lists this as the IMAP server.","host-label":"Incoming mail server","host-placeholder":"imap.acme.com","note-editable":"You can change these later on the channel page.","password-label":"Password","password-note":"Gruvi saves this and never shows it again. You can replace it later.","port-label":"Port","title":"Sign in to the mailbox","tls-description":"Keep this on unless your provider tells you otherwise.","tls-label":"Use TLS","username-description":"Often the full email address.","username-label":"Username"},"model":{"no-permission":"Ask an administrator to connect a mailbox.","question":"How should customers email you?","title":"Connect your own mailbox"},"outgoing":{"description":"Replies are sent from {address} through the mail server this installation is set up with.","errors":{"check-failed":"Could not check outgoing mail. Try again.","taken":"This mailbox is already connected to another channel. Go back and use another address."},"missing-description":"Customer mail still arrives in Gruvi. Replies cannot leave yet.","missing-error":"Replies cannot be sent yet. Ask your administrator to set up outgoing mail.","missing-title":"Outgoing mail is not set up on this installation. Ask your administrator.","preview-label":"Customers will see emails from","ready-description":"Your administrator changes it for every channel at once.","ready-title":"Outgoing mail is set up on this installation.","title":"How replies are sent"},"step":{"incoming":"Incoming mail","mailbox":"Mailbox","outgoing":"Outgoing mail"}},"model":{"custom":{"badge":"Bring your own","bullet-branded":"Branded customer experience","bullet-dns-required":"Requires DNS access","bullet-your-domain":"Customer sees your domain","tagline":"Customers email an address on a domain you own.","title":"Use my own domain","title-friendly":"Yes, I have a customer support email"},"description":"How do you want customers to email you?","gruvi":{"bullet-getting-started":"Best for getting started","bullet-instant":"Works immediately","bullet-no-dns":"No DNS setup required","tagline":"Customers email a Gruvi-hosted address.","title":"Use a Gruvi-provided address","title-friendly":"No, I don't have one yet"},"question":"Do you already have an email address you use for customer support?","recommended":"Recommended","title":"Choose your setup"},"note-forwarding-optional":"You can complete forwarding setup later from the channel detail page.","note-pick-and-continue":"Pick a setup and continue.","step":{"activate":"Activate","address":"Configure address","display-name":"Display name","dkim":"Verify domain","done":"Done","email-address":"Support email","forwarding":"Forwarding","model":"Choose setup"},"title":"Email channel"}},"interface":{"description":"Customize the look and feel of your workspace.","font-size":{"default":"Default","description":"Adjust the size of text across the app","large":"Large","small":"Small","title":"Font size"},"pointer-cursors":{"description":"Change the cursor to a pointer when hovering over any interactive elements","title":"Use pointer cursors"},"sidebar":{"customize":"Customize","description":"Customize sidebar item visibility, ordering, and badge style","title":"App sidebar"},"theme":{"dark":"Dark","description":"Select your preferred color scheme","light":"Light","system":"System","title":"Interface theme"},"title":"Interface and theme"},"knowledge":{"agent-section-description":"Documents specific to this agent. The agent also has access to workspace-level documents.","agent-section-shared-hint":"This agent also references shared workspace documents from Settings → Knowledge Sources.","agent-section-title":"Agent Knowledge","columns":{"added":"Added","chunks":"Chunks","name":"Name","status":"Status","type":"Type"},"delete-confirm":"Delete Document","delete-confirm-description":"Are you sure you want to delete \"{name}\"? This will permanently remove the document and all its processed chunks.","delete-confirm-title":"Delete Document","description":"Upload documents your AI agents can reference when answering customer questions.","empty-action":"Upload Document","empty-description":"Upload your first document to give your AI agents knowledge about your product, policies, and FAQs.","empty-title":"No documents yet","rename":"Rename","rename-dialog-placeholder":"Document name","rename-dialog-title":"Rename Document","reprocess":"Reprocess","sources-title":"Documents","status-failed":"Failed","status-indexing":"Learning","status-pending":"Pending","status-processing":"Processing","status-ready":"Ready","test-query":"Test Query","test-query-context":"Context","test-query-contextualized":"Contextualized","test-query-description":"Search your knowledge sources to see what the AI agent will find.","test-query-no-results":"No matching results found","test-query-placeholder":"Ask a question to test retrieval...","test-query-scope-agent":"Agent","test-query-scope-workspace":"Workspace","test-query-search":"Search","test-query-similarity":"{score}% match","test-query-source-ocr":"OCR","test-query-source-text":"Text","test-query-source-vision":"Vision","test-query-title":"Test Knowledge Retrieval","title":"Knowledge Sources","toast":{"delete-error":"Failed to delete document","rename-error":"Couldn't rename the document","reprocess-error":"Failed to reprocess document","upload-error":"Failed to upload document"},"type-docx":"DOCX","type-pdf":"PDF","type-txt":"TXT","upload-browse":"Browse files","upload-description":"Drag and drop files here, or click to browse. Supported formats: PDF, DOCX, TXT.","upload-hint":"Maximum file size: 50 MB","upload-title":"Upload Documents"},"labels":{"add-group":"Add Group","add-label":"Add Label","label-name":"Label name","group-name":"Group name","rename":"Rename","archive":"Archive","archive-error":"Couldn't archive. Please try again.","companies":{"description":"Manage labels and label groups for organizing companies.","title":"Company Labels"},"create-error":"Failed to create label","customers":{"description":"Manage labels and label groups for organizing customers.","title":"Customer Labels"},"delete-error":"Couldn't delete. Please try again.","empty-description":"Create your first label or group to organize your content.","empty-title":"No labels yet","threads":{"description":"Manage labels and label groups for organizing threads.","title":"Thread Labels"},"welcome":{"create-label":"Create your first label","step-1-description":"Pick a name and a color, like Bug, VIP, or Urgent.","step-1-title":"Create a label","step-2-description-company":"Apply labels from the company profile or the command palette.","step-2-description-customer":"Apply labels from the customer profile or the command palette.","step-2-description-thread":"Apply labels from the thread sidebar or the command palette.","step-2-title-company":"Tag your companies","step-2-title-customer":"Tag your customers","step-2-title-thread":"Tag your threads","step-3-description":"Slice inbox views and insights by label to spot patterns.","step-3-title":"Filter and report","title":"It's easy to organize with labels","wizard-hint":"You can organize labels into groups once you have a few."}},"live-chat":{"appearance":{"brand-color":"Brand Color","brand-color-description":"The accent color for buttons, links, and the launcher.","description":"Customize how the chat widget looks.","display-name":"Display Name","display-name-placeholder":"Support","identity":{"customized":"Customized for this widget.","description":"How you appear to customers in the widget.","inherited":"Using your workspace identity.","reset":"Reset to workspace","title":"Identity"},"launcher-icon":"Launcher icon","launcher-icon-description":"The icon shown on the launcher button.","launcher-icon-error":"We couldn't upload that image. Please try again.","launcher-icon-names":{"bubble":"Speech bubble","custom":"Your image","default":"Gruvi mark","message":"Message","sparkle":"AI bubble"},"launcher-icon-remove":"Remove your image","launcher-icon-replace":"Replace your image","launcher-icon-size-error":"That image is over {limit}. The launcher loads on every page of your site, so pick a smaller one.","launcher-icon-type-error":"That file isn't a supported image. Use a PNG, JPG, GIF, or WebP.","launcher-icon-upload":"Upload your own image","position":"Widget Position","position-description":"Which corner the launcher sits in.","position-left":"Bottom left","position-right":"Bottom right","sound-notifications":"Sound Notifications","sound-notifications-description":"Play a sound when new messages arrive.","title":"Appearance","widget-logo-error":"We couldn't upload that image. Please try again."},"availability":{"after-hours-message":"After-hours handoff message","after-hours-message-description":"Shown verbatim as its own message when someone writes outside office hours. Leave it empty to keep Chatter's generated handoff line. Any time promise comes from your reply-time estimate setting, not from this message.","after-hours-message-example":"Example: Thanks for reaching out. Our team is offline right now, but they will pick this up first thing tomorrow morning.","after-hours-message-placeholder":"Thanks for reaching out. Our team is offline right now, but they will pick this up first thing tomorrow morning.","custom-hours-description":"Off means live chat follows the workspace business hours.","custom-hours-label":"Set custom hours for this channel","custom-schedule-label":"Weekly schedule for this channel","description":"Control when the widget shows as online.","office-hours":"Office hours","office-hours-description":"Only show as online during set hours. Outside them, the widget appears offline.","title":"Availability"},"cancel":"Cancel","create":"Create a Live Chat Box","create-dialog-description":"Add a new live chat to your workspace.","create-dialog-label":"Live Chat Name","create-dialog-placeholder":"e.g. Marketing Site","create-dialog-title":"Create New Live Chat","create-flow":{"display-name":"Display name","display-name-description":"Shown to visitors in the chat widget header. Defaults to your workspace name if left empty.","display-name-placeholder":"e.g. Support","done":"Done","email-placeholder":"developer{'@'}company.com","errors":{"name-required":"Please enter a name for this channel.","name-taken":"A live chat channel with this name already exists."},"first-load-hint":"We'll notify you here the first time your widget loads on your site.","forms-configure-note":"You can fine-tune the fields later in settings.","forms-post-chat-description":"Collect a rating after the conversation is resolved.","forms-post-chat-title":"Do you want to add a survey after the chat?","forms-pre-chat-description":"Ask for a few details before the conversation starts.","forms-pre-chat-title":"Should customers complete a pre chat form?","internal-name":"Internal name","internal-name-description":"Used for organizing within your workspace. Not visible to visitors.","internal-name-placeholder":"e.g. Marketing Site","name-field-description":"Shown to visitors in the chat widget header. You can rename it later.","name-field-label":"Name","name-field-placeholder":"e.g. Acme Support","platform-android":"Android","platform-android-description":"Native app SDK","platform-available-now":"Available now","platform-coming-soon":"Soon","platform-ios":"iOS","platform-ios-description":"Native app SDK","platform-live":"Live","platform-web":"Web","platform-web-description":"Embed on any website","preview-placeholder":"Your live preview appears here once you name your widget.","ready-subtitle":"Add the snippet to your site and you're live.","ready-title":"Your widget is ready ✨","rules-domains-description":"Restrict where the widget can load. Leave empty to allow it everywhere.","rules-domains-placeholder":"acme.com","rules-domains-title":"Allowed domains","rules-office-hours-description":"Only show as online during your business hours.","rules-office-hours-note":"Defaults to 9am to 5pm on weekdays. Fine-tune the schedule in settings.","rules-office-hours-title":"Office hours","send":"Send","send-to-developer":"Send to your developer","send-to-developer-description":"We'll email the installation instructions.","sending":"Sending...","sent":"Sent!","skip-link":"Skip","skip-note":"Want to configure this later?","step-appearance-description":"Choose your brand color and widget position.","step-appearance-label":"Appearance","step-appearance-title":"Customize appearance","step-behavior-description":"Configure your greeting and reply time.","step-behavior-label":"Messaging","step-behavior-title":"Set up messaging","step-done-label":"Done","step-forms-description":"Capture details before and after the conversation.","step-forms-title":"Forms","step-install-description":"Add this script to your website's HTML, just before the closing </body> tag.","step-install-label":"Install","step-install-title":"Install on your website","step-look-feel-description":"Name your widget and set how it looks.","step-look-feel-title":"Choose how your live chat box looks","step-name-label":"Name","step-name-title":"Name your live chat","step-platform-description":"Web is live today. iOS and Android coming soon.","step-platform-label":"Platform","step-platform-title":"Install on your website","step-rules-description":"Control when and where the widget appears.","step-rules-title":"Rules"},"danger":{"delete-button":"Delete Live Chat","delete-confirm-description":"This action cannot be undone. This will permanently delete the live chat and remove all associated data.","delete-confirm-prompt":"Type {name} to confirm:","delete-confirm-title":"Delete Live Chat","delete-description":"Once you delete a live chat, there is no going back. Please be certain.","delete-title":"Delete this live chat","title":"Danger Zone"},"delete-error":"Failed to delete live chat. Please try again.","description":"Live chats can be added to your website or app for your customers to easily get live support.","detail":{"identity":{"created-meta":"Created {date}","name-taken":"A live chat with this name already exists.","rename-hint":"Click to rename","type-live-chat":"Live chat"},"save-state":{"error":"Failed to save","saved":"Saved","saving":"Saving..."},"status":{"activate":"Activate","description-active":"Your widget is live on your site and receiving conversations.","description-disconnected":"This live chat is disconnected. Reconnect to resume.","description-error":"We hit an error. Check your install for details.","description-paused":"Visitors won't see the widget until you resume.","pause":"Pause","resume":"Resume"}},"display":{"ai-agent-label":"AI Agent Label","ai-agent-label-description":"Label shown under the AI agent name in the widget header.","description":"Customize how the chat widget header appears to customers.","display-name":"Display Name","display-name-description":"Public-facing name shown in the widget header. Defaults to workspace name.","reply-time-estimate":"Reply Time Estimate","reply-time-estimate-description":"Shown in the widget header.","reply-time-in-a-day":"Usually replies in a day","reply-time-in-a-few-hours":"Usually replies in a few hours","reply-time-in-a-few-minutes":"Usually replies in a few minutes","reply-time-none":"None","show-agent-names":"Show Agent Names","show-agent-names-description":"Show individual agent first names when they respond.","title":"Widget Display"},"domain-nudge":{"action":"Add domains","description":"Add the domains where this widget should appear so it can't be embedded elsewhere.","dismiss":"Not now","title":"Limit where your widget loads"},"forms":{"add-field":{"button":"Add field","empty":"No fields available. Create a workspace property to use it here.","group-contact":"Contact","group-conversation":"Conversation","group-customer-properties":"Customer properties","group-thread-properties":"Thread properties","manage":"Manage","no-customer-properties":"No customer properties configured yet.","no-matches":"No fields match your search.","no-thread-properties":"No thread properties configured yet.","search":"Search fields...","tab-property":"Workspace properties","tab-system":"Identity & system","type-boolean":"Toggle","type-date":"Date","type-number":"Number","type-select":"Choice","type-text":"Text","type-url":"Link"},"binding":{"customer-email":"Email","customer-email-description":"Captured to the customer's email identity.","customer-email-hint":"Where you'll reach them after the chat","customer-name":"Name","customer-name-description":"Captured to the customer's display name.","customer-name-hint":"The visitor's name","property-missing":"Missing property","thread-rating-feedback":"Comment","thread-rating-feedback-description":"Free-text feedback alongside the rating.","thread-rating-feedback-hint":"Anything else they'd like to add","thread-rating-score":"Rating","thread-rating-score-description":"Star or emoji rating shown after resolution.","thread-rating-score-hint":"How happy they were with the chat","thread-topic":"Topic","thread-topic-description":"Stamped on the thread title so agents know what it's about.","thread-topic-hint":"A short subject for the conversation"},"field-editor":{"add-to-form":"Add to form","ask-for-comment":"Ask for a comment","ask-for-comment-hint":"After the rating, the bot offers \"Add a comment\" or \"No thanks\".","cancel":"Cancel","delete":"Delete field","edit-hint":"Edit field","hidden-tag":"Hidden","label-field":"Label","label-none":"No label shown","optional":"Optional","placeholder-none":"No placeholder shown","placeholder-varies":"Varies with the rating given","placeholder-dialog-description":"Shown as the gray hint inside the input. Leave blank to use the default.","placeholder-dialog-title":"Placeholder for {name}","placeholder-field":"Placeholder","placeholder-menu":"Edit placeholder...","placeholder-placeholder":"Override default placeholder","question-field":"Question","question-hint":"The bot sends this and waits for a reply.","rating-display":"Rating display","rating-menu":"Edit rating settings...","rating-message-source":"The message above these buttons is","remove":"Remove field","rename-hint":"Click to rename","required":"Required","required-question":"Required to submit","reset-label":"Reset to default name","reset-question":"Reset to default question","save":"Save"},"fields-empty":"No fields yet. Add one to choose what visitors share before chatting.","fields-heading":"Form fields","telegram-name-known":"Telegram already tells us their name","telegram-name-known-hint":"Every Telegram account carries a first name, so the bot never asks for one.","post-chat":{"description":"It'll be shown when the thread is resolved. Use it to track satisfaction.","email-prompt":"Email prompt","email-prompt-description":"Shown above the email field after the customer rates.","email-prompt-placeholder":"Get a copy of this thread","enabled-description":"Show the survey when an agent resolves the conversation.","enabled-title":"Enable post-chat survey","intro-message":"Prompt message","intro-message-description":"Shown above the survey.","intro-message-placeholder":"How was your experience?","needs-rating":"Turned off: the comment follows a rating, so it needs the rating on.","rating":{"count":"Scale points ({count})","description":"Customer satisfaction modality and scale length.","emojis":"Emojis (one per scale point)","emojis-hint":"Leave a slot blank to use the default for that position.","high-label":"High end label","high-label-placeholder":"Loved it","low-label":"Low end label","low-label-placeholder":"Hated it","scale-decrease":"Remove a scale point","scale-increase":"Add a scale point","title":"Rating","type":"Modality","type-emojis":"Emojis","type-stars":"Stars"},"submit-label":"Submit button label","submit-label-description":"Button that submits the email.","submit-label-placeholder":"Submit","thank-you-message":"Thank-you message","thank-you-message-description":"Shown after the survey is submitted.","thank-you-message-placeholder":"Thanks for your feedback!","title":"Post-chat survey","transcript-email-description":"The customer gets the whole chat by email.","transcript-email-label":"Email a transcript when the conversation is resolved"},"pre-chat":{"description":"Use this to capture customer email and name so you can follow up in case the chat is dieconnected.","enabled-description":"Show the form before the conversation starts.","enabled-title":"Enable pre-chat form","heading":"Form title","heading-description":"The headline shown at the top of the form.","heading-placeholder":"Before we start","intro-message":"Intro message","intro-message-description":"Shown above the form.","intro-message-placeholder":"Tell us a bit about yourself so we can get back to you.","submit-label":"Submit button label","submit-label-description":"Button that submits the form.","submit-label-placeholder":"Start chat","title":"Pre-chat form"},"preview-button":"Preview"},"go-back":"Go back","identity":{"backend-description":"Use the signing secret to create a token for the logged-in visitor.","backend-label":"1. Sign a token on your server","description":"Verify who your visitors are so others can't impersonate them in chat.","direct-link-description":"There is no widget on that page to hand the token to, so add it to the link itself. The page clears it from the address bar as soon as it loads.","direct-link-label":"Or, if you send people to your direct link","error":"Something went wrong. Please try again.","frontend-description":"Hand the signed token to the widget so we can verify the visitor.","frontend-label":"2. Pass the token to the widget","hide":"Hide","require":"Require identity verification","require-description":"Reject visitors whose identity isn't signed with a valid token.","reveal":"Reveal secret","rotate":"Rotate","secret-description":"Use this on your server to sign visitor identity tokens. Keep it private.","secret-label":"Signing secret","secret-warning":"Anyone with this secret can impersonate your visitors. Never expose it in client-side code.","show":"Show","title":"Identity verification"},"install":{"card-description":"Web is live today. iOS and Android coming soon.","direct-link":"Direct link","direct-link-copy":"Copy link","direct-link-description":"A chat page we host for you. Put it behind a button, a QR code, or a link in an email.","direct-link-identity":"Opening it as a signed-in customer?","direct-link-identity-configure":"Set up identity verification","direct-link-open":"Open","direct-link-toggle":"Enabled","guide":{"description":"Add the widget to your site in a few steps.","docs-card-description":"Step-by-step setup for WordPress, Shopify, Webflow, Squarespace, Wix, Google Tag Manager, and Framer.","docs-card-title":"Read the install guides","platforms-description":"Follow the platform-specific steps to add your snippet.","platforms-title":"Using a website builder?","platforms":{"framer":"Framer","gtm":"Google Tag Manager","shopify":"Shopify","squarespace":"Squarespace","webflow":"Webflow","wix":"Wix","wordpress":"WordPress"},"steps":{"copy-description":"Grab the code snippet above.","copy-title":"Copy your snippet","paste-description":"Add it just before the closing body tag on every page.","paste-title":"Paste it into your site","verify-description":"Open your site and look for the launcher in the corner.","verify-title":"Verify it's working"},"title":"Install guide","troubleshoot-title":"Not seeing the widget?","troubleshoot":{"blocked":"An ad blocker or privacy extension may be hiding it. Try a different browser.","csp":"Your Content Security Policy may be blocking the script. Allow the Gruvi domain.","delay":"It can take a minute to appear after install. Give it a moment and refresh.","inactive":"This live chat is paused. Activate it to show the widget."}},"mobile-coming-soon":"Mobile SDKs","mobile-coming-soon-description":"iOS and Android SDKs are coming soon. We'll notify you when they're ready.","platforms-description":"Step-by-step instructions for popular platforms.","platforms-label":"Platform guides","preview-badge":"Preview only. Not on {domain} yet.","preview-badge-generic":"Preview only. Not on your website yet.","preview-fallback-note":"We couldn't show your website here, so this is a sample page. The chat widget works the same once installed on your site.","preview-sample-headline":"We couldn't show your website here","preview-sample-headline-generic":"This is a sample page","preview-sample-description":"This is a sample page. The chat widget works the same once installed on your site.","preview-sample-description-generic":"The chat widget works the same once installed on your site.","preview-unreachable-headline":"We couldn't reach {domain}","preview-unreachable-description":"This is a sample page. Check the URL or try another one.","preview-identity-blocked":"Live preview isn't available while identity verification is required, because the widget needs a signed visitor token. Install the snippet on your site to test it there.","preview-identity-configure":"Configure it in Rules","preview-loading-page":"Getting the page ready...","preview-loading-ready":"Almost ready...","preview-loading-website":"Opening your website...","preview-loading-widget":"Placing your chat widget...","preview-unreachable-note":"We couldn't reach {url}, so this is a sample page. Check the URL or try another one.","preview-url":"Preview URL","preview-url-description":"Enter a website URL to preview the live chat on that site.","send-dialog":{"description":"Email the embed code and a link back to this page to whoever installs the snippet.","email-label":"Developer email","email-placeholder":"developer{'@'}yourcompany.com","send-button":"Send","sending":"Sending…","sent":"Sent","title":"Send install instructions"},"send-to-developer":"Send to developer","snippet-description":"Paste this snippet into your site's HTML, just before the closing body tag.","snippet-label":"Embed code","title":"Installation","try-it-out":"Try it out","web-snippet":"Install live chat on your website","web-snippet-description":"Add this script tag to your website's HTML, just before the closing </body> tag."},"list":{"created-on":"Created {date}"},"messaging":{"ai-auto-reply":"{name} replies here","ai-auto-reply-description":"Let your AI agent reply to customers automatically in this channel.","ai-auto-reply-fallback-name":"AI","composer-placeholder":"Composer Placeholder","composer-placeholder-description":"Placeholder text shown in the message input.","composer-placeholder-placeholder":"Write a message...","description":"Configure how the chat widget behaves.","emoji-picker":"Emoji Picker","emoji-picker-description":"Let customers add emojis to their messages.","file-attachments":"File Attachments","file-attachments-description":"Allow customers to send file attachments.","greeting-message":"Greeting Message","greeting-message-description":"Shown as the first message when a conversation starts.","greeting-message-placeholder":"How can we help you?","greeting-message-prefill":"Hi 👋 How can the {workspace} team help?","offline-message":"Offline Message","offline-message-description":"Shown when no agents are available.","offline-message-placeholder":"We're away right now. Leave a message and we'll get back to you.","reply-time-custom":"Custom","reply-time-custom-placeholder":"e.g. Usually replies within an hour","reply-time-estimate":"Reply Time Estimate","reply-time-estimate-description":"Shown in the widget header.","reply-time-in-a-day":"Usually replies in a day","reply-time-in-a-few-hours":"Usually replies in a few hours","reply-time-in-a-few-minutes":"Usually replies in a few minutes","reply-time-none":"None","show-agent-names":"Show teammate first names to customers","show-agent-names-description":"Customers see who is replying. When that teammate is out of office, customers also see the day they return.","title":"Messaging","transcribe-speech":"Transcribe my speech","transcribe-speech-description":"Let customers speak instead of typing.","voice-messages":"Voice Messages","voice-messages-description":"Let customers send voice messages.","voice-messages-label":"Voice messages"},"more-options":"More options","not-found":"Live chat not found.","offline":{"description":"What customers see when no one is available.","form-enabled":"Offline form","form-enabled-description":"Let customers leave their details and a message while you're away.","heading":"Form title","heading-description":"The headline shown at the top of the form.","heading-placeholder":"Leave us a message","intro-message":"Form intro","intro-message-description":"Short text shown above the offline form.","intro-message-placeholder":"We're away right now. Leave us a message.","message":"Offline message","message-description":"Shown in the header when the workspace is offline.","message-placeholder":"We're offline right now. Leave a message and we'll reply by email.","success-message":"Success message","success-message-description":"Confirmation shown after the form is submitted.","success-message-placeholder":"Thanks. We'll get back to you by email.","success-title":"Success title","success-title-description":"Heading shown after the form is submitted.","success-title-placeholder":"Message sent","title":"Offline"},"page-title":"Live Chat Settings","preview":{"description":"The chat widget is live on this page. Look for the launcher button in the bottom corner.","step":"Preview","surface":{"chat":"Chat","offline":"Offline","post-chat":"Post-chat","pre-chat":"Pre-chat"},"theme":"Toggle theme","title":"Live preview"},"save":"Save Changes","save-error":"Failed to update live chat settings","saving":"Saving...","sections":{"appearance":"Appearance","channel":"Channel","danger":"Danger zone","done":"Done","forms":"Forms","install":"Install","look-and-feel":"Look & feel","messaging":"Messaging","post-chat":"Post-chat","pre-chat":"Pre-chat","rules":"Rules"},"security":{"allowed-domains":"Allowed Domains","allowed-domains-description":"Only load the widget on these domains. Leave empty to allow all.","description":"Control where the widget appears and who can use it.","exclude-urls":"Exclude URLs","exclude-urls-description":"Hide the widget on pages matching these URL patterns.","include-urls":"Include URLs","include-urls-description":"Only show the widget on pages matching these URL patterns.","title":"Security & Visibility","url-pattern-hint":"URL patterns support wildcards: /docs/*","visibility-all":"All pages","visibility-mode":"Page Visibility","visibility-mode-description":"Choose where the widget appears across your site.","visibility-specific":"Specific pages","visibility-toggle-description":"By default the widget shows on every allowed page. Turn this on to choose exactly where it appears.","visibility-toggle-title":"Limit to specific pages"},"status":{"active":"Active","description":"Turn the visibility on your website(s) on or off","disconnected":"Disconnected","error":"Error","inactive":"Inactive","paused":"Paused","title":"Make live chat active"},"title":"Live Chat","welcome":{"add-channel":"Add live chat box","step-1-description":"Pick a brand color, display name, and the message customers see first.","step-1-title":"Set up the style and greeting","step-2-description":"A single script tag. Live on your site in under a minute.","step-2-title":"Paste the code on your website","step-3-description":"Send yourself a message and watch it land in your inbox.","step-3-title":"Test the box","title":"It's easy to create a new live chat box","wizard-hint":"Our Gruvi setup wizard will guide you through."}},"name-and-visuals":{"color":{"description":"Shown across your workspace, including the sidebar tint and live chat.","error":"Could not update the brand color.","title":"Brand color"},"description":"Manage your workspace identity, branding, and preferences.","logo":{"description":"Recommended size: 256x256px","title":"Workspace logo","upload-error":"Failed to upload logo"},"name":{"change-dialog":{"description":"This will update your workspace name everywhere, including the chat widget and email notifications.","error":"Failed to update workspace name.","name-label":"New name","title":"Change workspace name"},"description":"The display name for your workspace.","title":"Workspace name"},"rescan":{"action":"Scan website","error":"We could not scan your website. Try again later.","nothing-found":"We could not find a logo or brand color on your website.","scanning":"Scanning..."},"timezone":{"description":"Used for office hours and timestamps across your workspace.","error":"We couldn't update your timezone. Please try again.","title":"Timezone"},"title":"Name & visuals","url":{"coming-soon":"Coming soon","description":"Your unique workspace identifier.","title":"Workspace URL"},"website":{"description":"Your logo and brand color are scanned from this site.","invalid":"Enter a valid website URL.","placeholder":"yourcompany.com","title":"Website"},"workspace-details":{"description":"Manage your workspace identity and branding.","title":"Workspace details"}},"notifications":{"browser":{"blocked":"Blocked","page-title":"Browser notifications","page-description":"Banners on this device, even when Gruvi is closed.","master-enable":"Enable browser notifications","master-enable-description":"Turn this off to stop banners on every device you have connected.","blocked-hint":"Notifications are blocked. Click the lock icon in your browser's address bar to reset.","column-title":"Browser","connect-failed":"Could not enable notifications on this device. Try again.","description":"Receive notification banners when Gruvi is in the background","device-remove":"Remove","device-remove-failed":"Could not remove the device. Try again.","device-this":"This device","device-unknown":"Unknown device","devices-connected":"{count} device · works while Gruvi is closed | {count} devices · works while Gruvi is closed","disabled":"Disabled","enable":"Enable","enabled":"Enabled","manage-devices":"Manage devices","permission-not-granted":"Notification permission was not granted. Check the site permission in your browser's address bar and try again.","push-description":"Get notifications on this device even when Gruvi is closed.","push-unavailable":"Background push is not available in this browser session. Notifications will only show while Gruvi is open.","title":"Browser notifications"},"channel":{"action-failed":"Could not update the channel. Try again.","always-on":"Always on","connect":"Connect","connected":"Connected","disconnect":"Disconnect","needs-attention":"Needs attention","off":"Off","reconnect":"Reconnect"},"channels-description":"Choose how to be notified for workspace activity. Notifications will always go to your in-app inbox.","channels":{"description":"Connect the places you already watch. Anything you read in Gruvi first is never sent twice.","title":"Channels"},"description":"Configure how you receive alerts and updates.","email":{"business-hours-custom-description":"Off means email follows the workspace business hours.","business-hours-custom-label":"Set custom quiet hours","business-hours-custom-schedule-label":"Weekly schedule for email","business-hours-enable":"Only send during business hours","business-hours-enable-description":"Email notifications wait until the next open window.","description":"Enabled for {count} of {total} notification types","digest-hint":"{email} · digest, {minutes} minutes after the event","enable":"Enable email notifications","enable-description":"Send notifications to {email}","page-description":"Configure email notification delivery.","page-title":"Email Notifications","schedule-days-label":"Days","schedule-description":"Only deliver during scheduled hours.","schedule-enable":"Quiet hours","schedule-enable-description":"Pause non-critical email delivery outside of work hours.","schedule-from":"From","schedule-title":"Schedule","schedule-to":"To","status-disabled":"Email notifications are disabled","title":"Email"},"events":{"billing-payment-action-required":"Payment needs action","billing-payment-action-required-description":"Your bank asks you to confirm.","billing-payment-failed":"Payment failed","billing-payment-failed-description":"A charge did not go through.","billing-trial-ended":"Trial ended","billing-trial-ended-description":"The workspace is now on the free plan.","billing-trial-ending":"Trial ending","billing-trial-ending-description":"A few days before it ends.","company-note-mentioned":"In a company note","company-note-mentioned-description":"On a company profile.","csat-received":"Rating received","csat-received-description":"A customer rated a thread you handled.","customer-note-mentioned":"In a customer note","customer-note-mentioned-description":"On a customer profile.","knowledge-gap-detected":"Knowledge gap found","knowledge-gap-detected-description":"Customers keep asking something the knowledge base cannot answer.","knowledge-gap-resolved":"Knowledge gap closed","knowledge-gap-resolved-description":"An article now covers it.","knowledge-import-completed":"Import finished","knowledge-import-completed-description":"A website or file you added is ready.","knowledge-import-failed":"Import failed","knowledge-import-failed-description":"Something you added could not be read.","message-created":"New customer message","monitor-alert":"AI reply flagged by the monitor","monitor-alert-description":"The monitor found a problem in a reply the AI sent.","message-created-description":"On a thread assigned to you, or to nobody.","report-export-completed":"Export ready","report-export-completed-description":"With a download link that expires.","report-export-failed":"Export failed","report-export-failed-description":"With a way to retry.","run-pending-approval":"Approval needed","run-pending-approval-description":"An action waits for your yes.","skills-gap-detected":"Skill gap found","skills-gap-detected-description":"Customers keep asking for something no skill can do.","skills-gap-resolved":"Skill gap closed","skills-gap-resolved-description":"A skill now covers it.","sla-breach":"Reply or resolution overdue","sla-breach-description":"A response target was missed.","sla-escalation":"Escalated by a response target rule","sla-escalation-description":"A rule step ran because a target stayed missed.","sla-warn":"Reply or resolution due soon","sla-warn-description":"A response target is about to be missed.","thread-ai-handled":"AI took a new thread","thread-ai-handled-description":"The first message of a thread the AI agent is answering.","thread-assigned":"Assigned to you","thread-assigned-description":"By a teammate or a rule.","thread-escalated":"Handed to a person","thread-escalated-description":"The AI agent stopped and asked for a person.","thread-handoff-received":"Handed to you","thread-handoff-received-description":"A teammate going out of office handed their threads to you.","thread-mentioned":"In a thread","thread-mentioned-description":"Inside a reply or a note on a thread.","thread-state-changed":"Status changed","rule-notified":"Flagged by a rule","rule-notified-description":"A rule you set named you as someone to tell.","thread-teammate-replied":"Teammate replied","thread-teammate-replied-description":"A teammate wrote on a thread assigned to you.","thread-state-changed-description":"On a thread assigned to you.","thread-team-assigned":"Assigned to your team","thread-team-assigned-description":"Nobody has taken it yet.","usage-ceiling-warning":"Usage at the limit","usage-ceiling-warning-description":"The plan limit was reached.","usage-grace-activated":"Grace period started","usage-grace-activated-description":"Service continues for a short time past the limit.","usage-period-rollover":"New billing period","usage-period-rollover-description":"Usage counters reset.","usage-threshold-warning":"Usage near the limit","usage-threshold-warning-description":"At 90% of the plan."},"families":{"billing":"Billing","billing-description":"Usage, payments, trial.","conversations":"Threads","conversations-description":"New messages, assignments, status changes, approvals.","csat":"Ratings","csat-description":"A customer rates a thread.","handoffs":"Handoffs and response targets","handoffs-description":"The AI hands a thread to a person. A reply or resolution is due soon, overdue, or escalated.","knowledge":"Knowledge","knowledge-description":"Imports finished or failed, knowledge and skill gaps.","mentions":"Mentions","mentions-description":"A teammate mentions you in a thread or a note.","reports":"Reports","reports-description":"An export is ready or failed.","choose":"Choose","section-description":"One switch per family. Choose opens a family to pick single items.","section-title":"What to send","urgent":"Urgent"},"overview-description":"Choose where Gruvi reaches you.","team-events":{"message-created":"New unassigned thread","message-created-description":"A new thread arrives and nobody is assigned yet.","sla-breach":"Reply or resolution overdue","sla-breach-description":"A thread misses its response target.","thread-escalated":"Handed to a person","thread-escalated-description":"The AI hands a thread to the team."},"in-app":{"description":"Always enabled","instant-description":"Instant, in the notification panel","title":"In-App"},"slack":{"ask-admin-install":"Ask a workspace admin to install Slack first.","already-connected-cta":"Connect","already-connected-description":"Your Slack account is already connected from another workspace. One tap switches it on here too.","channels":{"disabled-hint":"Notifications to this channel are paused.","events":{"title":"Events"},"remove":"Remove","remove-confirm":"Remove","remove-description":"This channel will stop receiving team notifications. You can add it again later.","remove-failed":"Could not remove the channel. Try again.","remove-title":"Remove channel?","save-failed":"Could not save the change. Try again.","status-active":"Active","status-disabled":"Disabled","test":"Send test","test-failed":"Could not send a test message. Check that the Gruvi app is still in this channel.","test-sent":"Test message sent.","title":"Shared channels"},"connect-failed":"Could not connect Slack. Try again.","connected-detail":"{team} · via the Gruvi Slack app","connected-fallback":"Connected via the Gruvi Slack app","connected-toast":"Slack connected.","copy-handle":"Copy","description":"Direct messages from the Gruvi app in your Slack workspace","disconnect-confirm":"Disconnect","disconnect-description":"You will stop receiving notifications in Slack. You can connect again at any time.","disconnect-title":"Disconnect Slack?","enable":"Enable Slack notifications","enable-description":"Direct messages from the Gruvi app. Shared channels below post either way.","error-text":"Gruvi can't reach you in Slack. Reconnect to keep receiving direct messages.","installed-not-linked-detail":"Connected to {team}. Connect your Slack account to get direct messages.","installed-not-linked-fallback":"Slack is installed for this workspace. Connect your Slack account to get direct messages.","just-connected":"Connected. Your notifications will come through Slack from now on.","master-enable":"Send my notifications to Slack","master-enable-description":"Turn this off to stay connected but go quiet.","not-available":"Slack notifications are not set up on this server yet.","page-description":"Connect Slack for personal direct messages and team updates in shared channels.","page-title":"Slack Notifications","personal":{"connect":"Connect my Slack account","connected":"Connected","description":"Private direct messages from the Gruvi app in Slack. This setting affects only you.","disconnect":"Disconnect","disconnect-confirm":"Disconnect","disconnect-description":"You will stop receiving personal direct messages from Gruvi in Slack. Shared channels and the workspace connection are not affected.","disconnect-title":"Disconnect personal notifications?","error-text":"Gruvi can't send you direct messages right now. Reconnect your Slack account.","not-connected":"Not connected","reconnect":"Reconnect","reconnect-hint":"Your Slack account was disconnected. Reconnect to keep receiving direct messages.","requires-workspace":"Personal notifications become available once an owner or admin connects a Slack workspace.","title":"Personal notifications"},"send-test":"Send a test","step-channels-count":"No channels connected | 1 channel connected | {count} channels connected","step-channels-description":"Invite Gruvi to any channel your team uses. It starts posting there straight away and turns up below, where you choose what it sends.","step-channels-title":"Team channels","step-channels-title-empty":"Add a channel for your team","step-channels-wait":"Connect yourself first, then Gruvi can post to a channel.","step-channels-watching":"Watching for invites. Add {handle} to a channel and it appears here within a second.","step-channels-watching-fallback":"Watching for invites. Add Gruvi to a channel and it appears here within a second.","step-connect-cta":"Connect to Slack","step-connect-first":"This puts Gruvi in your Slack workspace and starts sending you your own notifications. Installing it needs a Slack workspace owner or admin.","step-connect-joining":"Gruvi is already in your Slack workspace. Connect your account to start getting your own notifications.","step-connect-title":"Connect Slack","step-connected-title":"Your notifications","summary-paused":"Paused","summary-types":"{on} of {total} types on","test-failed":"Could not send the test. Try again.","test-sent":"Test sent","title":"Slack","workspace":{"connected":"Connected","description":"The Gruvi app installed in your team's Slack workspace. It powers personal direct messages and shared channel updates.","disconnect":"Disconnect","disconnect-confirm":"Disconnect workspace","disconnect-description":"This removes Slack for the whole workspace. Everyone stops receiving personal direct messages, and shared channels are disabled until Slack is installed again.","disconnect-title":"Disconnect the Slack workspace?","error-text":"The Slack installation needs attention. Reconnect the workspace to restore notifications.","fallback-name":"Slack workspace","install":"Install Slack","member-locked":"An owner or admin must install Slack for this workspace.","not-installed":"Not installed","reconnect":"Reconnect","title":"Slack workspace"},"workspace-disconnect-all":"Disconnect for everyone","workspace-disconnect-all-description":"Everyone on the team stops getting Gruvi messages in Slack, and every connected channel goes quiet. The Gruvi app stays installed in Slack, so reconnecting here brings it all back.","workspace-disconnect-all-title":"Disconnect Slack for everyone?"},"telegram":{"already-connected-cta":"Connect","already-connected-description":"Your Telegram account is already connected from another workspace. One tap switches it on here too.","card-description":"Messages from the Gruvi notifications bot on Telegram","connected":"Connected","connected-detail":"{name} · via the Gruvi notifications bot","copied":"Copied","copy-handle":"Copy","disconnect":"Disconnect","disconnect-confirm":"Disconnect","disconnect-description":"You will stop receiving notifications on Telegram. Team groups keep posting, and you can connect again at any time.","disconnect-title":"Disconnect Telegram?","enable":"Send notifications to Telegram","enable-description":"Receive notifications as messages from the Telegram bot.","error-prompt":"Notifications stopped reaching you on Telegram. If you blocked the bot, unblock it, then scan the code again.","expiry-note":"This link expires in 15 minutes.","generate-new":"Generate a new link","group-identity-ask-again":"Ask again","group-identity-declined":"In shared Telegram groups your messages stay as they are.","group-identity-linked":"In shared Telegram groups your messages appear as you.","group-identity-stop":"Stop","groups":{"add":"Add to a group","add-explainer":"Open the link in Telegram and pick a group. The bot joins that group and starts posting team events there.","cancel":"Cancel","disabled-hint":"The bot was removed from this group. Add it again to re-enable.","empty":"No groups connected yet.","events":{"title":"Events"},"expiry-note":"This link expires in 15 minutes.","explainer":"Post team events to a shared Telegram group.","generate-new":"Generate a new link","invite-hint":"Your account is connected, so you can also skip this: add the bot to any Telegram group and it starts posting there straight away.","open-telegram":"Open Telegram","qr-alt":"QR code to add the Telegram bot to a group","remove":"Remove","remove-confirm":"Remove","remove-description":"This group will stop receiving team notifications. You can add it again later.","remove-title":"Remove group?","save-failed":"Could not save the change. Try again.","scan-hint":"Scan this code with the Telegram app, then choose the group to add the bot to.","status-active":"Active","status-disabled":"Disabled","title":"Team groups","untitled":"Untitled group","waiting":"Waiting for the bot to join a group"},"just-connected":"Connected. Your notifications will come through Telegram from now on.","linked-fallback-name":"Telegram account","linking-explainer":"Open the link in Telegram, or scan the code with your phone, then tap Start to connect your account.","master-enable":"Send my notifications to Telegram","master-enable-description":"Turn this off to stay connected but go quiet.","not-available":"Telegram notifications are not set up on this server yet.","open-telegram":"Open Telegram","page-description":"Get notified through the Telegram bot.","page-title":"Telegram Notifications","qr-alt":"QR code to link Telegram","scan-hint":"Scan this code with your phone's camera to open the bot in Telegram.","send-test":"Send a test","step-connect-description":"Scan this with your phone, or open the bot and tap Start.","step-connect-title":"Connect Telegram","step-connected-title":"Your notifications","step-groups-count":"No groups connected | 1 group connected | {count} groups connected","step-groups-description":"Invite this bot to any group your team uses. It starts posting there straight away and turns up below, where you choose what it sends.","step-groups-title":"Team groups","step-groups-title-empty":"Add a group for your team","step-groups-wait":"Connect yourself first. That is how Gruvi knows which workspace a group belongs to.","step-groups-watching":"Watching for invites. Add {handle} to a group and it appears here within a second.","summary-paused":"Paused","summary-types":"{on} of {total} types on","test-failed":"Could not send the test. Try again.","test-sent":"Test sent","title":"Telegram","unlink":"Unlink","unlink-confirm":"Unlink","unlink-description":"You will stop receiving notifications on Telegram. You can link again at any time.","unlink-title":"Unlink Telegram?","waiting":"Waiting for you to connect","ways":{"group-description":"A shared group gets the events your whole team should see: new threads nobody has picked up, escalations, and missed response targets. Add one under Team groups below.","group-title":"For a team group","personal-description":"Your own notifications arrive in a private chat with the bot. Scan the code below to set it up.","personal-title":"Just for you","title":"Two ways to get notifications"}},"title":"Notifications","updates":{"changelog":{"newsletter":"What's new newsletter","newsletter-description":"Receive a summary of new features and improvements.","show-in-sidebar":"Show updates in sidebar","show-in-sidebar-description":"Highlight new features and improvements in the app sidebar.","title":"Changelog"},"description":"Subscribe to product announcements and important changes from the Gruvi team.","marketing":{"onboarding":"Marketing and onboarding","onboarding-description":"Occasional emails to help you get the most out of Gruvi.","title":"Marketing"},"other":{"invite-accepted":"Invite accepted","invite-accepted-description":"Email when invitees accept an invite.","privacy-and-legal":"Privacy and legal updates","privacy-and-legal-description":"Email when privacy policies or terms of service change.","title":"Other updates"},"title":"Updates from Gruvi"},"whatsapp":{"cancel":"Cancel","connected-detail":"{number} · via Gruvi's WhatsApp number","connected-fallback":"Connected via Gruvi's WhatsApp number","description":"Connect your WhatsApp Business number so customers can reach you on WhatsApp.","page-title":"WhatsApp","page-description":"Alerts and approval requests to your WhatsApp number.","master-enable":"Enable WhatsApp notifications","master-enable-description":"Turn this off to stop every WhatsApp message.","disclosure-accept":"Show QR code","disclosure-content":"Messages carry your workspace name, the kind of event, and the teammate who acted. Customer names and message content are never included.","disclosure-cost":"Delivery uses WhatsApp template messages paid by Gruvi. Most event types are off by default; you choose what arrives.","disclosure-events":"You will get a WhatsApp message for assignments, mentions, and escalations in this workspace.","disclosure-stop":"Reply STOP to the number or disconnect here to stop messages. One message that was already on its way may still arrive.","disconnect-confirm":"Disconnect","disconnect-description":"You will stop receiving WhatsApp notifications in every workspace. You can connect again at any time.","disconnect-title":"Disconnect WhatsApp?","error-text":"Gruvi can't reach you on WhatsApp. Reconnect to resume notifications.","expiry-note":"This link expires in 15 minutes.","generate-new":"Generate a new link","link-explainer":"Scan the QR code with your phone, or open WhatsApp on this device, and send the prefilled message to Gruvi's number.","not-available":"WhatsApp notifications are not set up on this server yet.","open-whatsapp":"Open WhatsApp","title":"WhatsApp","waiting":"Waiting for you to connect","step-disclosure-title":"What arrives on WhatsApp","step-disclosure-description":"Read this before you connect.","step-disclosure-agreed":"Agreed","step-disclosure-continue":"Continue","step-code-title":"Send the code","step-code-description":"Scan with your phone, or open WhatsApp on this device.","step-code-wait":"Finish the step above first.","step-connected-title":"Your notifications","prefilled-note":"WhatsApp opens with the code already typed in. Send it as it is.","just-connected":"Connected. Your notifications will come through WhatsApp from now on.","summary-paused":"Paused","summary-types":"{on} of {total} types on","linked-fallback-name":"WhatsApp account","qr-alt":"QR code to connect WhatsApp","intro-title":"Notifications on WhatsApp","intro-description":"Gruvi sends you a WhatsApp message when a thread is handed to you, a teammate mentions you, or a reply is overdue. You choose which ones after you connect.","intro-scan":"Scan a QR code with your phone, or open WhatsApp on this device.","intro-send":"WhatsApp opens with a message already typed in. Send it, and you are connected.","intro-consent":"By continuing you agree to get these messages from Gruvi. Reply STOP at any time to stop them.","intro-accept":"I understand","flow-title":"Connect WhatsApp","flow-description":"Here is what happens next.","flow-done":"Done","flow-scan-title":"Scan","flow-scan-body":"Scan the QR code, or open WhatsApp on this device.","flow-send-title":"Send","flow-send-preview":"Send this code to Gruvi for verification:","flow-send-body":"Already typed in. Just tap send.","flow-connected-title":"Connected","flow-connected-body":"Notifications arrive in that chat. Pick which ones here.","flow-note":"Nothing connects until you send that message.","flow-continue":"Continue","flow-scan-short":"With your phone, or open WhatsApp here.","flow-send-message":"Send this message","flow-send-preview-short":"Gruvi verification code:"}},"plans":{"ai-agent":"AI support agent","annual-badge":"2 months free","billing-cycle":{"monthly":"Monthly","yearly":"Yearly"},"contact":{"chips":{"limits":"Custom limits","support":"Priority support","volume":"Volume pricing"},"cta":"Talk to us","description":"Higher volume, custom limits, and priority support. Tell us what you need and our team will reach out.","error":"Could not send your request. Please try again.","sent-description":"Our team will reach out to you shortly. We've emailed a confirmation to your inbox.","sent-title":"Request sent","title":"Need more than Scale?"},"current":"Current","current-plan":"Current Plan","description":"Choose the plan that fits your team.","downgrade":"Downgrade","everything-in":"Everything in {plan}","features":{"csat":"Customer satisfaction ratings","custom-personality":"Custom agent personality","custom-skill-creation":"Custom skill creation","knowledge-base":"Knowledge base","sovereign":"Sovereign: AI without personal data","voice-messages":"Voice messages"},"footer-note":"Going over your plan is on us. We never charge for overage, and your AI keeps working through a grace month.","integrations":{"custom":"Custom integrations","messaging":"Messaging integrations (Whatsapp, Slack)","popular":"Popular integrations (Email, Webchat, Telegram)","technical":"Technical integrations (Stripe, Shopify, Logista)"},"limits":{"ai-agents":"{count} AI agent | {count} AI agents","operator-chats-per-month":"{count} operator chats / mo","threads-per-month":"{count} threads / mo","website-pages-total":"{count} website pages"},"most-popular":"Most popular","per-interval":{"month":"/month","year":"/year"},"tiers":{"free":{"description":"Start free and see what your team can do. No card needed, upgrade whenever you are ready.","name":"Free"},"growth":{"description":"For growing teams that need more headroom.","name":"Growth"},"scale":{"description":"For scaling businesses with higher volume.","name":"Scale"},"starter":{"description":"Flat pricing for unlimited seats and your first AI agent.","name":"Starter"}},"title":"Plans","trial-badge":"{days}-day free trial","unlimited-users":"Unlimited users","upgrade":"Upgrade"},"properties":{"companies":{"description":"Use this to collect extra information about the companies you work with.","title":"Company Properties"},"customers":{"description":"Use this to collect extra information about your customers. Properties appear as fields on the customer pages.","title":"Customer Properties"},"delete-dialog":{"cancel":"Cancel","confirm":"Delete","description":"{name} will be removed from this list. Existing values on customer and thread records stay in place but will no longer display.","title":"Delete property?","type-prompt":"Type {name} to confirm:"},"empty":{"cta":"New property","hint":"Properties show on every profile in this scope.","step-1-description":"Choose a descriptive name like Plan or Industry.","step-1-title":"Name it","step-2-description":"Text, number, date, URL, boolean, or select from a list.","step-2-title":"Pick a type","step-3-description":"Required for select-type properties. Optional otherwise.","step-3-title":"Add options if needed","title":"Create your first property"},"errors":{"copy-slug-failed":"Could not copy slug","delete-failed":"Failed to delete property","reorder-failed":"Failed to reorder properties"},"flow":{"configure":{"description-hint":"Optional, shown as a tooltip in the customer or thread panel.","description-label":"Description","description-placeholder":"Help your team know when to use this property.","heading-default":"Add a description","heading-select":"Configure your options"},"customize":{"hint":"Pick your own icon and color, or leave it for the default.","label":"Customize","reset":"Reset to default"},"done":{"create-another":"Create another","description-create-company":"Your new property is ready to use across companies.","description-create-customer":"Your new property is ready to use across customer profiles.","description-create-thread":"Your new property is ready to use across threads.","done":"Done","title-create":"Property created","title-update":"Property updated"},"errors":{"create-failed":"Failed to create property","update-failed":"Failed to update property"},"name":{"duplicate":"That name is already used. Pick another one.","heading":"What should we call it?","label":"Name","placeholder":"e.g. Plan, Industry, Signup date","slug-empty":"your-slug-here","slug-fixed":"Stays the same when you rename.","slug-prefix":"API slug:"},"options":{"add-button":"Add","add-placeholder":"Add an option, press Enter","empty":"Add at least one option before continuing.","label":"Options","remove":"Remove option"},"primary-create":"Create property","primary-next":"Next","primary-save":"Save","shape":{"boolean-hint":"A simple toggle","boolean-label":"Yes or no","boolean-sample":"On","date-hint":"A day on the calendar","date-label":"Date","date-sample":"Mar 5, 2025","edit-locked":"You can't change the shape after creating, but everything else is fair game.","edit-locked-detail":"Need a different shape? Create a new property instead.","heading":"What kind of answer is it?","number-hint":"Counts, totals, scores","number-label":"Number","number-sample":"1,500","select-hint":"Choose from a list","select-label":"Pick one","select-sample":"Pro","subheading":"Pick how it'll look when someone fills it in.","text-hint":"Short notes or labels","text-label":"Text","text-sample":"Pro plan","url-hint":"A web address","url-label":"Link","url-sample":"acme.com/cust/87"},"step-configure-label":"Configure","step-done-label":"Done","step-name-label":"Name","step-type-label":"Type","title-create-company":"New company property","title-create-customer":"New customer property","title-create-thread":"New thread property","title-edit":"Edit property","type":{"boolean-description":"A simple yes or no toggle.","boolean-label":"Boolean","date-description":"Calendar dates, like signup or renewal.","date-label":"Date","edit-locked":"Type cannot be changed after creation.","heading":"Pick a type","number-description":"Numeric values, with or without decimals.","number-label":"Number","select-description":"Pick one from a fixed list of options.","select-label":"Select","subheading":"Type defines what values this property can hold. You cannot change it after creation.","text-description":"Free-form text, like notes or short labels.","text-label":"Text","url-description":"Links to external pages or resources.","url-label":"URL"}},"new":"New property","row":{"copy-slug":"Copy API slug","delete":"Delete","edit":"Edit","no-description":"No description","options-count":"{count} option | {count} options"},"threads":{"description":"Define typed attributes that appear on every thread.","title":"Thread Properties"},"type":{"boolean":"Boolean","date":"Date","number":"Number","select":"Select","text":"Text","url":"URL"}},"publish":{"action":"Save to {destination}","action-count":"Save {count} change | Save {count} changes","discard":"Discard","leave-anyway":"Leave without saving","leave-body":"Your changes are saved here but are not on {destination} yet. Customers keep seeing the old version until you save them there.","leave-stay":"Stay here","leave-title":"Save your changes to {destination} first?","live-flag":"Live on {destination}","pending-flag":"Not on {destination} yet","publishing":"Saving","state-checking":"Checking what {destination} is showing...","state-clean":"Up to date with {destination}.","state-live":"Updated {time}.","state-pending":"Saved here, not on {destination} yet.","state-unavailable":"Couldn't read what {destination} is showing.","waiting":"{count} waiting | {count} waiting"},"reset-to-default":"Reset to default","revert":"Revert","save-state":{"error":"Failed to save","saved":"Saved","saving":"Saving..."},"security":{"confirm-enable":"Enable","confirm-enable-description":"This will require all members to register a passkey. Members without one will be prompted on their next visit.","confirm-enable-title":"Require passkeys?","description":"Configure security policies for your workspace.","passkeys-description":"Require members to use passkeys for secure access.","passkeys-title":"Passkey Authentication","require-passkeys":"Require passkeys","require-passkeys-description":"All members must register a passkey to access this workspace.","title":"Security","update-error":"Failed to update security settings."},"sidebar":{"agents":"AI Agents","assignment":"Assignment","billing":"Billing","blocked-customers":"Blocked Customers","canned-replies":"Canned Replies","company-labels":"Company Labels","composer":"Composer","company-properties":"Company Properties","customer-labels":"Customer Labels","customer-properties":"Customer Properties","customer-satisfaction":"Customer Satisfaction","danger-zone":"Danger zone","email":"Email","group-channels":"Channels","group-customers":"Customers","group-extend":"Extend","group-members":"Members","group-subscription":"Subscription","group-threads":"Threads","group-workspace":"Workspace","integrations":"Integrations","invites":"Invites","knowledge":"Knowledge Sources","labels":"Labels","live-chat":"Live Chat","members":"Members","name-and-visuals":"Name & visuals","no-results":"No settings found","notifications":"Notifications","plans":"Plans","plans-billing":"Plans & billing","presence":"Presence","results":"Results","roles":"Roles & permissions","search-placeholder":"Search settings...","security":"Security","teams":"Teams","teams-and-members":"Teams & members","telegram":"Telegram","thread-labels":"Thread Labels","thread-properties":"Thread Properties","threads":"Threads","whatsapp":"WhatsApp"},"telegram":{"availability":{"ai-available":"Chloe stays available","ai-available-description":"The AI agent keeps answering on Telegram after hours and hands off to the team the next business day.","custom-hours-description":"Off means Telegram follows the workspace business hours.","offline-capture":"Capture for the team","offline-capture-description":"Telegram collects the customer's request and tells them the team will reply during business hours.","offline-message-prefill":"We're offline right now. Leave a message and we'll get back to you here.","outside-mode":"Outside office hours"},"card":{"check":"Check connection","checking":"Checking...","customers-note":"Customers who message this bot appear in your inbox.","disconnect":"Disconnect","error":{"invalid-token":"The bot token is no longer valid. Reconnect with a fresh token from BotFather.","webhook-unreachable":"Telegram could not reach the webhook. Check again in a moment."},"last-checked":"Checked {time}","never-checked":"Not checked yet","status":{"active":"Active","disconnected":"Disconnected","error":"Error","paused":"Paused"}},"danger":{"disconnect-title":"Disconnect this bot","title":"Danger zone"},"description":"Connect a Telegram bot so customers can reach you in Telegram.","detail":{"go-back":"Go back","loading-title":"Telegram bot","not-found":"This Telegram bot was not found."},"disconnect":{"confirm":"Disconnect","description":"New Telegram messages will stop arriving. Existing conversations stay in your inbox, and you can reconnect the same bot anytime.","title":"Disconnect this bot?"},"forms":{"contact":"Request a Telegram contact card","location":"Request the customer's current location","native-description":"Ask for the customer's contact or location with native Telegram prompts.","native-title":"Telegram requests"},"messaging":{"description":"What customers experience in the conversation.","files":"Process images and documents","greeting":"Greeting message","media-description":"Which message types customers can send, and how the bot reacts.","media-title":"Media and reactions","processing-reaction":"Show a temporary processing reaction","reply-time":"Reply-time expectation","stickers":"Process stickers","voice":"Process voice messages"},"preview":{"bot":"bot","bot-info-fallback":"Add a description so customers know how this bot can help.","comment-add":"Add a comment","comment-prompt":"Would you like to add a comment?","comment-skip":"No thanks","customer-message":"I need help with my order.","greeting":"Hi! How can we help?","message-placeholder":"Message","no-survey":"With the rating off, the bot sends no survey after a thread is resolved.","offline-fallback":"We are away right now. Leave your details and we will get back to you.","rating-intro":"How did we do? Tap a rating below.","rating-thanks":"Thanks for your feedback!","sample-email":"alex{'@'}example.com","sample-name":"Alex","start":"Start","step":"Preview","surface":{"bot-info":"Bot info","chat":"Chat","offline":"Offline","post-chat":"Post-chat","pre-chat":"Pre-chat"},"what-can-bot-do":"What can this bot do?"},"profile":{"applied":"Bot profile updated","apply":"Apply to Telegram","description":"Description","description-hint":"Answers \"What can this bot do?\" in the empty chat, before the customer taps Start.","description-line":"How your bot appears to customers in Telegram.","identity-hint":"Shown to customers on Telegram as {username}.","name":"Name","photo":"Photo","remove-photo":"Remove photo","save-rejected":"Telegram didn't accept {fields}. Your changes are saved here, so you can try again.","short-description":"Short description","short-description-hint":"Appears on the bot's profile page and when the bot is shared."},"sections":{"danger":"Danger zone","look-and-feel":"Look & feel","messaging":"Messaging","post-chat":"Post-chat","pre-chat":"Pre-chat","rules":"Rules","share":"Share your bot"},"share":{"description":"Share this link so customers can reach you in Telegram.","title":"Bot link"},"title":"Telegram","welcome":{"add-channel":"Connect a bot","no-permission":"A bot has not been connected yet. Ask a workspace admin to set one up.","step-1-description":"Message {'@'}BotFather in Telegram to make a new bot and get its token.","step-1-title":"Create a bot with BotFather","step-2-description":"We check the token and confirm the bot before connecting it.","step-2-title":"Paste the bot token","step-3-description":"People who message your bot show up as conversations in your inbox.","step-3-title":"Start chatting","title":"Connect Telegram","wizard-hint":"Takes about a minute. Keep Telegram open so you can talk to BotFather."},"wizard":{"applying-profile":"Applying bot profile","connect":"Connect bot","connect-slow":"Telegram is slow right now. Still connecting.","connecting":"Connecting to Telegram","connected":{"description":"Share this link so customers can start a chat. Their messages land in your inbox.","inbox-note":"Anyone who messages your bot appears as a new conversation in your inbox.","title":"Your bot is connected"},"create":{"continue":"I have my token","description":"Telegram bots are created through BotFather, Telegram's official bot for building bots.","step-copy":"BotFather replies with a token. Copy it, you will paste it next.","step-newbot":"Send {command} and follow the prompts to pick a name and a username.","step-open":"Open BotFather in Telegram.","step-open-link":"Open {'@'}BotFather","title":"Create your bot"},"done":"Done","step":{"connected":"Connected","create":"Create the bot","token":"Bot token"},"title":"Connect Telegram","token":{"check":"Check token","confirm":{"description":"Connect it to start receiving messages in your inbox.","retry":"Use a different token","title":"Is this your bot?"},"description":"Paste the token BotFather gave you. We only use it to connect your bot.","errors":{"invalid":"That does not look like a bot token. Copy the whole token BotFather sent you.","unreachable":"Telegram is unreachable right now. Try again in a moment."},"label":"Bot token","placeholder":"123456789:ABCdefGHIjklMNO...","title":"Paste your token"}}},"threads":{"assignment":{"card-description":"Applies to incoming chat and email threads.","card-title":"Auto-assign new threads","description":"Decide who owns a thread the moment it arrives.","members-error":"Could not load teammates. Please try again.","name":"Assignment","no-members":"No teammates to assign to yet.","person-label":"Assign every new thread to","presence-note":"Threads are only auto-assigned to agents who are online. If no one is available, the thread waits in Unassigned.","save-error":"Could not save assignment settings. Please try again.","strategy-none":"No one","strategy-none-description":"Threads stay unassigned and wait in the Unassigned view. This is the default.","strategy-round-robin":"Round robin","strategy-round-robin-description":"Rotate fairly across the agents who are online right now.","strategy-specific-person":"Specific person","strategy-specific-person-description":"Always route to one agent, while they are online."},"auto-close":{"delay-24h":"24 hours","delay-48h":"48 hours","delay-72h":"72 hours","delay-7d":"7 days","delay-label":"Close resolved threads after","description":"Automatically close resolved threads after a delay.","title":"Auto-Close"},"group-chats":{"description":"Defaults for every connected Telegram group. Each group can change them.","title":"Group chats"},"card-layout":{"description":"Choose what each line of a thread card shows. This only changes how you see the inbox.","fields":{"customer":"Customer name","last-message":"Last message","title":"Title"},"preview-label":"Preview","reorder-hint":"Drag to reorder. The first line is the most prominent.","sample":{"first-customer":"Riley Chen","first-message":"Hi! The lamp arrived with a cracked base, can I get a refund?","first-title":"Order arrived damaged","second-customer":"Sam Whitaker","second-message":"You: They are under Billing, let me know if you need anything else!","second-title":"Where can I download my invoices?"},"title":"Inbox card layout"},"description":"Configure thread behavior and customer-facing labels.","name":"Threads","numbering":{"change":"Change","change-dialog":{"confirm":"Change prefix","current-label":"Now","description":"The new prefix will apply to all thread references across your workspace.","errors":{"invalid":"Only uppercase letters, numbers, and hyphens are allowed.","max-length":"Prefix must be at most 10 characters.","min-length":"Prefix must be at least 2 characters."},"new-label":"After","new-prefix-label":"New prefix","preview-label":"Preview","title":"Change thread prefix","warning":"Thread IDs update everywhere as soon as the change is saved.","warning-title":"This affects every thread","what-changes-notifications":"New emails and notifications will link to the new prefix.","what-changes-references":"All thread references in the inbox, search, and command palette will use the new prefix.","what-changes-title":"What will change","what-changes-urls":"Permalinks will update to the new prefix format.","what-wont-break-old-links":"Old shared links will redirect to the new prefix automatically.","what-wont-break-thread-data":"Thread data, history, and customer context are not affected.","what-wont-break-title":"What won't break"},"description":"Set a prefix for thread numbers.","no-prefix":"No prefix set","prefix-label":"Thread prefix","prefix-placeholder":"e.g. SUP","title":"Thread Numbering"},"priorities":{"description":"Rename the four levels to match how your team talks. The scale itself stays fixed.","internal":"internal","name-aria":"Display name for the {level} level","preview-label":"How it will look","reset":"Reset to defaults","save-error":"Your priority names couldn't be saved. Try again.","title":"Priorities","too-long":"Use at most 24 characters."},"save-error":"Failed to save thread settings."},"title":"Settings","whatsapp":{"card":{"check":"Check connection","checking":"Checking...","customers-note":"Customers who message this number on WhatsApp appear in your inbox.","disconnect":"Disconnect","error":{"invalid-credentials":"The connection credentials are no longer valid. Reconnect to refresh them.","not-configured":"WhatsApp is not fully configured for this workspace yet."},"last-checked":"Checked {time}","link-label":"WhatsApp link","never-checked":"Not checked yet","pending-webhook":{"callback-label":"Callback URL","description":"Meta has not verified the callback URL yet, so messages cannot arrive. In your Meta app, open WhatsApp, Configuration, then Webhook, and paste these values.","title":"Finish webhook setup","verify-token-label":"Verify token"},"status":{"active":"Active","disconnected":"Disconnected","error":"Error","paused":"Paused"}},"connection":{"action":{"check-again":"Check again","open-billing":"Open Meta billing","open-display-name":"Open display name review","open-verification":"Open Meta verification","reconnect":"Reconnect","retry-connection":"Retry connection","retry-registration":"Retry registration"},"checking":"Checking...","reason":{"billing-required":"Your WhatsApp Business Account needs a payment method before messages can flow.","business-verification-pending":"Meta is reviewing your business verification.","credentials-invalid":"The connection credentials are no longer valid.","display-name-pending":"Meta is reviewing your display name.","generic":"The connection is not ready yet.","phone-registration-failed":"Registering your number with WhatsApp failed.","webhook-unavailable":"Gruvi could not connect the webhook that delivers your messages."},"retrying":"Retrying..."},"description":"Connect your WhatsApp Business number so customers can reach you on WhatsApp.","disconnect":{"confirm":"Disconnect","consequence-messages":"New WhatsApp messages stop arriving in Gruvi.","consequence-move":"Moving the number to another provider or back to the WhatsApp Business app takes additional steps with Meta.","consequence-registered":"Your number stays registered with WhatsApp. Your Business Account and number are not deleted.","consequence-waba":"Gruvi disconnects from your WhatsApp Business Account.","lead":"Disconnecting stops WhatsApp in this workspace. Here is what changes:","retry-error":"Part of the disconnect did not finish. Run Disconnect again to complete it.","title":"Disconnect WhatsApp?"},"identity":{"billing-embedded":"Billed by Meta to your business","billing-label":"Billing","business-name-label":"Verified business name","method-embedded":"Embedded Signup","method-label":"Connection method","method-manual":"Manual","waba-label":"WhatsApp Business Account id"},"quality":{"description":"Meta's health signals for this number. The rating reflects recent customer feedback; the tier limits business-initiated conversations.","error":"Quality signals could not be loaded. Try again.","rating-label":"Quality rating","rating":{"unrated":"Not rated yet"},"refresh":"Refresh","tier-label":"Messaging tier","tier-per-day-plural":"{count} business-initiated conversation per 24 hours | {count} business-initiated conversations per 24 hours","tier-unknown":"Not available yet","tier-unlimited":"Unlimited business-initiated conversations","title":"Messaging quality"},"templates":{"category":{"authentication":"Authentication","marketing":"Marketing","utility":"Utility"},"description":"Templates are authored and reviewed in WhatsApp Manager. Approved utility templates can re-engage a conversation after the 24-hour reply window closes.","empty":"No templates on this WhatsApp Business Account yet.","error":"Templates could not be loaded. Try again.","manage":"Manage in WhatsApp Manager","refresh":"Refresh","status":{"approved":"Approved","disabled":"Disabled","paused":"Paused","pending":"Pending","rejected":"Rejected"},"title":"Message templates"},"test":{"description":"Message this number from your phone to confirm it reaches your inbox.","link-label":"WhatsApp link","open-inbox":"Open inbox","qr-alt":"QR code linking to your WhatsApp number","scan-hint":"Scan this code, or open the link, then send any message.","success-description":"WhatsApp is connected and receiving messages.","success-title":"It works. Your message is in the inbox.","test-later":"Test later","title":"Test your connection","waiting":"Waiting for your first message..."},"title":"WhatsApp","welcome":{"add-channel":"Connect WhatsApp","embedded":{"hint":"Takes a few minutes. You'll need admin access to your Meta business portfolio.","step-1-description":"Approve Gruvi's access in the Meta popup.","step-1-title":"Sign in with Facebook","step-2-description":"Choose or add the number your customers will message.","step-2-title":"Pick your WhatsApp number","step-3-description":"Confirm it lands in your Gruvi inbox.","step-3-title":"Send yourself a test message"},"no-permission":"WhatsApp has not been connected yet. Ask a workspace admin to set it up.","step-1-description":"Create or open the Meta app that will power this channel.","step-1-title":"Prepare your Meta app","step-2-description":"Paste the access token, phone number id, and WhatsApp Business Account id.","step-2-title":"Enter your credentials","step-3-description":"Gruvi connects the webhook and you confirm a message arrives.","step-3-title":"Send a test message","title":"Connect WhatsApp","wizard-hint":"Takes about ten minutes. Keep your Meta app dashboard open in another tab."},"wizard":{"continue":"Continue","credentials":{"app-secret-label":"App secret","app-secret-placeholder":"From App settings, Basic","check":"Validate credentials","confirm":{"connect":"Connect number","description":"This is what Meta returned for your credentials. Connect it to continue.","errors":{"conflict":"This number or workspace already has a WhatsApp connection.","not-configured":"This server is not set up for WhatsApp yet. Contact support to enable it.","unreachable":"Could not reach WhatsApp to finish connecting. Nothing was connected, try again."},"retry":"Use different credentials","title":"Is this your number?"},"description":"We validate them with Meta before anything is saved. They are stored encrypted and never shown again.","errors":{"format-app-secret":"That does not look like an app secret. Find it under App settings, Basic, and click Show.","format-id":"Ids are numbers only. Copy the id exactly as API Setup shows it.","format-token":"That does not look like an access token. Copy the whole token Meta generated.","invalid-token":"Meta rejected this access token. Generate a new one.","invalid-app-secret":"The app secret does not match the token's Meta app.","invalid-phone-number-id":"This phone number ID is incorrect or inaccessible with this token.","invalid-waba-id":"This business account ID is incorrect or inaccessible with this token.","permission-denied":"This token lacks permission to access the WhatsApp account.","token-expires":"This token expires, so the connection would stop. Use a permanent system user token.","unreachable":"WhatsApp is unreachable right now. Try again in a moment."},"phone-number-id-label":"Phone number id","phone-number-id-placeholder":"15-digit number from API Setup","title":"Paste your credentials","token-label":"Access token","token-placeholder":"Permanent system user token","waba-id-label":"WhatsApp Business Account id","waba-id-placeholder":"15-digit number from API Setup"},"done":"Done","facebook":{"advanced-link":"Advanced setup: connect with your own Meta app","continue":"Continue with Facebook","description":"Meta's guided setup runs in a popup. Pick or create your WhatsApp Business number and Gruvi handles the rest, no Meta dashboards needed.","errors":{"cancelled":"The signup was cancelled before finishing. Try again when you are ready.","no-number":"The signup finished without a WhatsApp number. Run it again and pick a number.","popup-closed":"The Facebook window closed before finishing. Try again.","sdk-failed":"The Facebook signup could not load. Check for a popup blocker and try again."},"popup":{"cancel":"Cancel","hint":"Complete the steps in the popup. This screen updates automatically once you're done. If no window opened, allow popups for this site and try again.","title":"Finish setup in the Facebook window"},"step-1":"Sign in with the Facebook account that manages your business.","step-2":"Choose or create your WhatsApp Business account and phone number.","step-3":"Gruvi connects the number and starts receiving messages automatically.","title":"Connect with Facebook"},"number":{"description":"Pick the option that matches the number you want to connect. It tailors the checklist on the next step.","option":{"cloud-api":{"hint":"You will move it to Gruvi. Coordinate the switch with your current provider to avoid downtime.","title":"Connected to another provider"},"mobile-app":{"hint":"Connecting it to a platform changes how the app can use it.","title":"Used in the WhatsApp Business app"},"new":{"hint":"The fastest path. The number must be able to receive an SMS or a voice call.","title":"Not on WhatsApp yet"}},"title":"How is this number used today?"},"prepare-embedded":{"callout":{"cloud-api":"This replaces the current provider connection. Message history does not transfer, and expect a brief gap while the number moves.","mobile-app":"The number disconnects from the WhatsApp Business app when it joins the API. Chats on the phone do not transfer."},"description":"Have these ready. The signup takes a few minutes.","requirement":{"admin":"Admin access to your Meta Business portfolio","billing":"A payment method on the WhatsApp Business Account for conversation charges. Billing stays with your business, not Gruvi.","business":"Your business name and details. Meta reviews the display name.","contact":"Access to receive an SMS or voice call on the number"},"title":"Before you start"},"prepare":{"continue":"I have my credentials","description":"WhatsApp Business Platform runs through a Meta app you own. Three things to line up before pasting anything here.","step-open":"Open Meta for Developers and create a Business-type app with the WhatsApp product added, or open the one you already have.","step-open-link":"Meta for Developers","step-token":"In Meta Business Settings, create a system user with access to the app and generate a permanent token with the {messaging} and {management} permissions. Tokens from the API Setup page expire in 24 hours, so use a system user token.","step-values":"Keep four values handy: the access token, the phone number id and WhatsApp Business Account id (both shown on WhatsApp, API Setup), and the app secret (App settings, Basic).","title":"Prepare your Meta app"},"progress":{"description":"This usually takes under a minute. You can close this and finish later, the connection keeps going.","error-title":"The connection hit a problem","finish-later":"Finish later","pending-description":"Meta is still processing. This can take a few minutes. You can finish later, the settings page keeps track.","pending-title":"Waiting on Meta","request-error":{"conflict":"This number is already connected to a Gruvi workspace.","not-configured":"Embedded signup is not configured for this environment.","number-unavailable":"That number is not available to connect. Pick a different number in the signup.","session-expired":"The Facebook signup session expired. Run the signup again.","unknown":"Something went wrong while completing the signup. Try again.","unreachable":"Meta could not be reached. Wait a moment and try again.","wrong-waba":"The signup returned a different WhatsApp Business Account than expected. Run the signup again and pick the right account."},"stage":{"approval":"Checking Meta approval","prepare":"Preparing your channel","register":"Registering your number","verify":"Verifying your account","webhook":"Connecting the webhook"},"title":"Connecting your number","try-again":"Try again"},"step":{"credentials":"Credentials","facebook":"Facebook","number":"Your number","prepare":"Prepare","prepare-embedded":"Before you start","progress":"Connecting","test":"Test","webhook":"Webhook"},"test":{"subtitle":"Message {businessName} on WhatsApp and watch it arrive in your inbox.","title":"Send yourself a test message"},"title":"Connect WhatsApp","webhook":{"callback-label":"Callback URL","description":"In your Meta app, open WhatsApp, then Configuration, and click Edit in the Webhook section.","error-invalid-credentials":"The saved credentials stopped working. Close the wizard, disconnect the channel, and reconnect with a fresh token.","step-paste":"Paste both values into the webhook dialog and click Verify and save.","step-subscribe":"Then click Manage next to Webhook fields and subscribe to {messages}.","title":"Point Meta's webhook at Gruvi","verified":"Webhook verified","verify-token-label":"Verify token","waiting":"Waiting for Meta to verify the callback...","waiting-hint":"This completes the moment you click Verify and save in your Meta app."}}}},"setup-passkey":{"action":"Create passkey","description":"Passkeys use your fingerprint, face, or device lock. No passwords to remember, it only takes a few seconds.","name-description":"Give it a name so you can identify it later.","name-title":"Passkey created","save-continue":"Save & continue","subtitle":"Your workspace uses passkeys for sign-in.","title":"Almost there"},"shortcuts":{"assign":"Assign thread","assign-to-me":"Assign to me","cheat-sheet":{"description":"Quick actions to navigate and manage threads.","no-results":"No shortcuts found","search-placeholder":"Search shortcuts...","title":"Keyboard Shortcuts","toggle":"Show keyboard shortcuts"},"command-palette":"Open command palette","composer-attach":"Attach file","composer-chatter-switcher":"Switch AI agent","composer-emoji":"Emoji picker","composer-note":"Note mode","composer-dictation":"Transcribe my speech","composer-slash-menu":"Open slash menu","composer-voice":"Voice message","dismiss":"Dismiss","go-customers":"Go to customers","go-inbox":"Go to inbox","go-knowledge":"Go to knowledge sources","go-members":"Go to members","go-settings":"Go to settings","groups":{"composer":"Composer","general":"General","navigation":"Navigation","status-sub-keys":"Status Sub-keys (press ⌘⇧S first)","thread-actions":"Thread Actions"},"labels":"Toggle labels","next-thread":"Next thread","notifications":"Notifications","previous-thread":"Previous thread","reply":"Reply (focus)","resolve":"Resolve thread","search":"Search","snooze":"Snooze thread","status":"Change thread status","status-close":"Close thread","status-reopen":"Reopen thread","status-resolve":"Resolve","status-spam":"Mark as spam","thread-details":"Thread details","unsnooze":"Unsnooze thread"},"skills":{"activity":{"all-skills":"All skills","all-statuses":"Any status","already-reviewed":"Already reviewed by {name}","approval-expired":"This proposal has expired","approve":"Approve","cannot-review-permission":"You do not have permission to approve this action","cannot-review-sensitive":"This action needs one of its designated sensitive approvers","day-runs":"{count} run | {count} runs","decline":"Decline","empty-body":"When a skill runs on a thread it shows up here, and anything that needs your approval waits at the top. Rehearse a draft skill or add one to get started.","empty-browse":"Browse the marketplace","empty-filtered":"No runs match these filters.","empty-rehearse":"Rehearse a skill","empty-title":"No runs yet","expires-distance":"expires in {distance}","filter":{"all":"All","done":"Done","needs-you":"Needs you","running":"Running"},"load-more":"Load more","needs-you-subtitle":"Runs paused for your approval, oldest at the bottom. Approve here and the skill finishes the job.","needs-you-title":"Needs you first","placeholder":{"body":"Soon you'll see what each skill did, when, and why, across every thread. It's on the way.","title":"Every skill run, in one place"},"proposed-distance":"{name} proposed · waiting {distance}","queue-load-failed":"Could not load what needs your approval.","stream-load-failed-body":"This list is not showing what your skills have done.","stream-load-failed-title":"Could not load activity","today":"Today","unknown-customer":"Unknown customer","waiting-count":"{count} waiting","yesterday":"Yesterday"},"all":{"title":"All skills"},"catalog":{"report-a-bug":{"connection-role":{"issue-tracking":"Files bugs and feature requests as tasks for your product team. Creates tasks and comments only, nothing else changes."},"consent":{"before-act":"Ready to send this to the product team? They will see everything you shared here."},"fixtures":{"feature-request":{"description":"The request is filed as a task, no screenshot needed.","label":"Feature request filed"},"follow-up":{"description":"The thread already has a task, so the new details are added to it.","label":"More details on the same bug"},"happy-path":{"description":"The bug is filed as a new task with the screenshot attached.","label":"New bug filed"},"provider-error":{"label":"Tracker unavailable"}},"name":"Report a bug or request a feature","policy":{"body":"Verify the customer's email first. Work out from the conversation whether this is a bug or a feature request, and only ask when it is genuinely unclear. For a bug, ask what went wrong in one short line, then what happened in detail, and ask for a screenshot that shows the problem. For a feature request, ask what they want and why it matters to them, and do not ask for a screenshot. Check whether this thread already opened a task. If it did, add the new details to that same task instead of opening another one. If it did not, file a new task for the product team. Tell the customer the report is filed and that the team will follow up in this thread. Never promise a fix date and never promise that a feature will be built. If the details stay unclear after three tries, hand the thread to a person.","title":"Bug reports and feature requests","when-to-use":"Use when a customer reports something broken or asks for something new."},"purpose":"Turns bug reports and feature requests into tasks for your product team and adds follow-ups to the same task."},"sovereign":{"capability":"Keeps data private","name":"Sovereign","purpose":"Keeps your customers' personal data out of every AI request. Names, numbers, cards and addresses stay in Gruvi; the AI never sees them."},"where-is-my-order":{"connection-role":{"commerce":"Looks the order up in your store. Reads only, nothing changes in your store."},"fixtures":{"happy-path":{"description":"The order shipped and tracking is ready.","label":"Order on its way"},"multiple-matches":{"label":"Several orders match"},"no-match":{"label":"No order with that number"},"provider-error":{"label":"Store unavailable"}},"name":"Where is my order?","policy":{"body":"Verify the customer's email first. Ask for the order number and check it against the connected store. Reply with the current status, tracking, and delivery estimate only when the store returns them. If the number does not check out, ask again up to three times. If no order is found, stop guessing, never invent details, and hand the thread to a person.","title":"Order status lookup","when-to-use":"Use when a customer asks where their order is."},"purpose":"Looks the order up in your store and replies with where it is."}},"catalog-update":{"button":"Update","caveat-draft":"Any edits your team made will be replaced and can't be restored, because this skill hasn't been published yet.","caveat-history":"Any edits your team made will be replaced, but your last published version stays in version history.","changes-fallback":"This update refreshes this skill to Gruvi's latest version.","changes-intro":"This update changes: {parts}.","confirm-action":"Update","confirm-safe-line":"Connections, approvals, and settings stay the same.","error":"Couldn't update the skill. Please try again.","eyebrow":"Skill update · By Gruvi","part":{"category":"Category","instructions":"Instructions","title":"Title","when-to-use":"When to use","workflow":"Workflow steps"},"tooltip":"Updates this skill to Gruvi's latest version. Your connections and settings stay the same.","updating":"Updating","what-this-replaces":"What this update replaces","whats-new":"What's new"},"checklist":{"action-review":"Review","action-setup":"Set up","approval":{"answer-only":"This skill only answers, so there is nothing to approve.","rung-act":"The skill acts on its own within the limits you set.","rung-assess":"The skill assesses only. It never acts on its own.","rung-propose":"The skill proposes each action for a person to approve.","title":"Choose the approval behavior"},"caveat-tag":"Sample data","connect":{"action":"Connect","bound":"Connected and ready.","credentials":"The connected credentials need attention before this can go live.","destinations":"Connected. Now choose where this skill's reports land.","destinations-action":"Choose where reports land","needs":"Connect an app for this skill, or rehearse on sample data first.","sample-blocks":"Rehearsing on sample data. Connect a real app before you publish a skill that acts.","sample-ok":"Rehearsing on sample data. That is a fine way to try it out.","title":"Connect or choose sample data"},"consent":{"answer-only":"This skill only answers, so the customer is not asked to confirm an action.","done":"The customer is asked to confirm before the skill acts.","identity":"This skill must verify the customer's identity before it acts.","missing":"Add the line the skill uses to ask the customer before it acts.","title":"Review what the customer is asked"},"mapping":{"done":"Fields are matched to your connected system.","title":"Confirm the field mapping","unresolved":"Match the skill's fields to your connected system."},"publish":"Publish","publish-blocked":"Finish the steps above to publish.","publish-blocked-review":"{count} extracted detail still needs your review before publishing. | {count} extracted details still need your review before publishing.","publish-ready":"Everything checks out. Publish to take this skill live.","publish-title":"Publish","rehearse":{"body":"Play the required scenarios in the sandbox and clear any that fail.","coverage":"{green} of {total} passing","none":"No required rehearsals for this skill yet.","title":"Run the required rehearsals"},"subtitle":"A few steps take this draft from rehearsal to live.","title":"Get this skill live"},"compile":{"activate":"Put into action","all-done-title":"All drafts handled","back-to-skills":"Back to Skills","char-count":"{count} / {max} characters","compile":"Draft the skill","confirm-number":"Confirm","draft-activated":"In action","draft-activated-hint":"This skill is live. Your agent follows it from the next conversation on.","draft-kept":"Kept as a draft","draft-kept-hint":"The draft is saved on your Skills page. Open it anytime to finish it.","draft-untitled":"Untitled skill","dropped-action":"The action \"{label}\" relies on information this skill doesn't collect or look up, so it was left out of the draft. Add the missing detail in the editor if you need it.","dropped-drafts":"{count} draft couldn't be validated, so it was left out. | {count} drafts couldn't be validated, so they were left out.","dropped-gate":"The condition \"{label}\" relies on information this skill doesn't collect or look up, so it was left out of the draft. Add the missing detail in the editor if you need it.","dropped-step":"Gruvi couldn't ground the step \"{label}\": it relies on information this skill doesn't collect or look up, so it was left out of the draft. Add the missing detail in the editor if you need it.","error-description":"The wizard couldn't draft a skill from this text. Check that it describes a procedure with rules, then try again.","error-title":"That didn't work","extracting-description":"The wizard is turning your text into a skill draft: what to collect, what to check, and what happens at the end. This can take a minute or two.","extracting-title":"Reading your policy","go-to-skills":"Go to Skills","keep-as-draft":"Keep as draft","no-procedure-description":"The wizard read this through and didn't find a support procedure it could turn into a skill. Nothing was created.","no-procedure-edit":"Edit the text","no-procedure-reason-label":"What the wizard found","no-procedure-title":"No procedure to draft from","number-confirmed":"Confirmed","number-source":"From your policy:","numbers-blocked-hint":"Confirm every number above to put this skill into action.","numbers-description":"These numbers came straight from your text and will gate real outcomes. Confirm each one means what you meant.","numbers-heading":"Confirm the numbers","paste-description":"Paste the rules as your team wrote them. The wizard drafts a skill from exactly what's written, and asks about anything it can't ground.","paste-heading":"Paste the policy","paste-minimum":"Add at least {min} characters to continue.","paste-placeholder":"Paste your refund policy, cancellation terms, eligibility rules...","review-description":"Read each draft, settle the open questions, confirm the numbers, then put the ones you trust into action.","review-error":"That couldn't be saved. Try again.","review-heading":"Review {count} skill draft | Review {count} skill drafts","save-error":"The draft couldn't be saved. Try again.","source-coverage-description":"Some numbers in your source landed in no draft. Check whether a rule is missing before you publish.","title":"Turn a policy into a skill","try-again":"Try again","where-discretion":"in the exception \"{label}\"","where-field":"in the format check for \"{label}\"","where-gate":"in the condition \"{label}\"","where-step":"in the step input \"{label}\""},"connections":{"add":"Add a connection","avail":{"legend":"Reads wait on the customer verifying in each conversation, so the state can differ per thread. Off means you turned agent access off for that read.","legend-plain":"Reads work once the customer verifies in the conversation. Off means you turned that read off.","read-off":"Agent access is turned off, so {agent} will not reach for it.","read-on":"{agent} can use this on demand, once the customer verifies.","state-off":"Agent access off","state-on-demand":"On demand","state-through-skills":"Through skills","write":"Never on demand. Runs only inside a skill, after a person approves."},"available":{"subtitle":"Connect a tool once here and any skill can use it, within the limits you set.","title":"Available"},"category":{"account":"Account","anything-else":"Anything else","billing":"Billing","commerce":"Commerce","crm":"CRM","custom":"Custom","general":"General","orders":"Orders","scheduling":"Scheduling"},"connected":{"subtitle":"The tools this workspace is wired into. Health is measured over the last 14 days of actions.","title":"Connected"},"cred":{"add-live":"Add live key","add-sandbox":"Add sandbox key","added-at":"Added {time}.","added-by":"Added by {name} {time}.","live-desc":"Acts on your real data.","live-missing-desc":"Skills stay in the sandbox until a live key is added. Nothing touches real data before then.","live-title":"Live key","rotate":"Rotate key","sandbox-desc":"Runs against test data.","sandbox-missing-desc":"Lets new skills rehearse against test data before anything real is touched.","sandbox-title":"Sandbox key","state-added":"Added","state-missing":"Not added yet"},"crm-detail":{"companies":"Companies","conflicts":"Needs review","contacts":"Contacts","disconnect-description":"Your data stays in Gruvi and links to CRM records are kept. Reconnecting the same account revives them.","disconnect-description-plain":"Your data stays in Gruvi. Reconnect the same account later and everything comes back.","last-sync":"Last synced","nav":"Sync","pause":"Pause sync","paused-note":"Sync is paused. New changes are held and applied when you resume.","resume":"Resume sync","status-label":"Status","status":{"backfilling":"Importing","error":"Needs attention","idle":"Waiting for the next sync","live":"Up to date","paused":"Paused"},"subtitle":"Contacts and companies flow in one way, kept up to date automatically.","subtitle-plain":"Contacts and companies come in automatically and stay up to date.","sync-now":"Sync now","syncing":"Syncing","title":"Sync"},"crm-map":{"already-mapped":"Already mapped","change":"Change","create":"Create field","custom-sub":"Unmapped properties are not synced. Nothing lands in the wrong field.","custom-sub-plain":"Properties you don't map are not brought in.","custom-sub-sync":"Mapped properties sync both ways. Unmapped ones stay out.","custom-title":"Custom properties","group":{"company":{"sub":"These map to fields on your companies.","title":"Company properties"},"customer":{"sub":"These map to fields on your customers.","title":"Contact properties"}},"map-to":"Map to field","map-to-existing":"Map to existing field","mapped-generic":"Mapped","nav":"Fields","no-existing":"No fields here yet.","no-matches":"No properties match your search.","save":"Save mapping","save-failed":"Not saved","saved":"Saved","saving":"Saving","search-placeholder":"Search properties","standard-title":"Standard fields","subtitle":"Standard fields map automatically. Map custom properties to Gruvi fields, or create a field on the spot.","title":"Field mapping","type":{"boolean":"Yes / no","number":"Number","string":"Text"}},"crm":{"done":{"send-back-label":"Sending back","send-back-off":"Off","send-back-on":"On, new customers only","send-back-queued-plural":"On, {count} queued to introduce | On, {count} queued to introduce","send-back-queued-plain":"On, {count} waiting to be added","summary":"{contacts} contacts and {companies} companies now live in Customers, and changes keep syncing in.","summary-plain":"{contacts} contacts and {companies} companies are now in Customers and stay up to date.","tail-off":"Nothing goes back to {provider}. You can turn it on later from Sync on the {provider} connection.","tail-off-plain":"Nothing goes to {provider}. Turn it on any time from the Sync tab.","tail-on":"Gruvi introduces each customer once, then leaves the record alone. Pause it any time from Sync on the {provider} connection.","tail-on-plain":"Gruvi adds each customer once and doesn't change them after. Pause any time from the Sync tab.","tail-on-sync":"Gruvi adds each customer once and keeps mapped fields up to date. Pause any time from the Sync tab.","title":"{provider} is connected","view-customers":"View customers"},"import":{"companies":"Companies","contacts":"Contacts","done-title":"Import complete","running-title":"Importing from {provider}","subtitle":"Counts update as records are written. You can close this and it keeps going.","subtitle-plain":"You can close this. The import keeps going."},"mapping":{"confirm":"Looks good","custom-note":"Custom properties can be mapped to workspace fields once the first import completes.","custom-note-plain":"You can map custom properties after the first import.","intro":"Standard {provider} fields map automatically. Here is where each one lands.","intro-plain":"These {provider} fields map automatically.","target":{"company":"Company","email":"Email contact point","job-title":"Job title","location":"Location","name":"Customer name","phone":"Phone contact point"}},"oauth-failed":"Connecting was not completed. Try again from the card.","oauth":{"connect":"Connect {provider}","pinned-context":"{skill} is waiting on this connection. It uses {provider} to {capability}.","redirect-note":"You will be sent to {provider} to approve access, then brought straight back here.","scopes":{"companies":"Read companies, so customers are grouped by organization.","contacts":"Read contacts, so they appear as customers here.","add":"Add contacts and companies for new customers. Nothing else is changed or deleted.","add-sync":"Add contacts and companies, and update the fields you map. Nothing is ever deleted.","create":"Create contacts and companies for customers {provider} has never seen. Gruvi never edits or deletes a record it did not create.","read-only":"Read only. Your CRM data is never changed from Gruvi."},"subtitle":"Sign in and approve read access. Nothing is written back.","subtitle-plain":"Sign in and approve access. Gruvi only reads.","subtitle-access":"Sign in and approve access. Sending customers back to your CRM stays off until you turn it on.","title":"Connect {provider}"},"request-failed":"Could not record your request. Try again.","send-back":{"behavior":"Gruvi only creates what {provider} is missing. It never edits or deletes.","behavior-plain":"Gruvi only adds new contacts and companies. It never changes or deletes anything.","behavior-sync":"Gruvi adds new contacts and companies and updates mapped fields. It never deletes anything.","fresh-body":"Leave them alone, push only from now on.","fresh-body-plain":"They stay as they are. Only new customers are added.","lane-arming":"New customers go back to {provider}","lane-arming-tag":"Turning on","lane-in":"{contacts} contacts and {companies} companies imported","lane-off":"Nothing goes back to {provider}","lane-off-tag":"Off","lane-on":"On","lede":"{provider} is feeding Gruvi. The last piece is the other direction: when a verified customer arrives that {provider} has never seen, Gruvi creates their contact and company, then steps back and lets sync keep them current. It never edits or deletes a record it did not just introduce.","note-approval":"{provider} will ask you to approve this once, then bring you straight back.","note-off":"Nothing will go back to {provider}. You can turn this on later from Sync on the {provider} connection.","note-off-short":"Nothing goes back to {provider}.","note-ready":"{provider} has approved write access. Continue and Gruvi starts introducing new verified customers.","option-off-body":"{provider} still syncs into Gruvi. New Gruvi customers are not sent.","option-off-title":"Don't send customers to {provider}","option-sync-body":"New verified customers are added to {provider} with their company. Keeps the two in sync.","option-sync-body-adds":"Adds the {customers} and {companies} not in {provider} yet, then every new verified customer.","option-sync-title":"Sync verified customers to {provider}","push-body":"Introduce them, then keep pushing new ones.","push-body-plain":"Add them now, then keep adding new ones.","qual-sub":"Choose what happens to them.","qual-title":"{customers} and {companies} in Gruvi are new to {provider}","switch-off":"Gruvi will not create anything in {provider}. Sync keeps flowing the other way, into Gruvi.","switch-off-plain":"Nothing is added to {provider}. Contacts still come into Gruvi.","switch-on":"Only verified customers cross over. Unverified chat visitors are never pushed, no matter how complete their profile looks.","switch-on-plain":"Only verified customers are added.","switch-title":"Send new customers to {provider}","switch-title-direction":"Send new customers from Gruvi to {provider}"},"step":{"connect":"Connect","done":"Done","import":"Import","mapping":"Mapping","send-back":"Send back"}},"custom-api":{"capabilities":{"at-least-one":"Pick at least one action.","create":"Create connection","method-label":"Method","path-invalid":"Path must start with a slash.","path-label":"Path","path-placeholder":"/customers","pick-capabilities":"Actions","pinned-badge":"Required by this skill","pinned-context":"{skill} is waiting on this. It needs: {capability}.","reuse-read-body":"Reads you declare here also become tools {agent} can use in any conversation, once the customer verifies.","reuse-read-label":"Reads","reuse-title":"What happens to what you declare here","reuse-write-body":"Writes only ever run inside a skill you approve, with its risk tier, approvals, and the production gate around them.","reuse-write-label":"Writes","subtitle":"Pick one area, then the actions your skills will call. Each maps to a method and path on your API.","title":"What it can do","type-label":"Connection type","write-floor-note":"Actions that change data through a custom API always ask a person to approve before they run."},"capability":{"book-callback":"Book a callback","cancel-subscription":"Cancel a subscription","find-account":"Find account","find-customer":"Find customer","get-latest-charge":"Look up latest charge","get-subscription":"Look up subscription","issue-refund":"Issue a refund","lookup-order":"Look up an order","refund-charge":"Refund a charge","reset-login":"Reset login","update-shipping-address":"Update shipping address"},"display-name":"Custom API","endpoint":{"auth-bearer-desc":"We send your secret as an Authorization: Bearer header.","auth-bearer-title":"Bearer token","auth-header-desc":"We send your secret in a header you name.","auth-header-title":"Custom header","auth-label":"How it authenticates","base-url-help":"We add each action's path to this base. HTTPS only.","base-url-invalid":"Enter a public HTTPS URL.","base-url-label":"Base URL","base-url-placeholder":"https://api.yourservice.com","header-name-label":"Header name","header-name-placeholder":"X-Api-Key","mode-live-desc":"Skills act against your live endpoint from the first run.","mode-sandbox-desc":"Point at a test endpoint. Skills rehearse and nothing real moves. Recommended.","secret-desc":"The token or header value. Stored encrypted, and never shown again.","secret-label":"Secret","subtitle":"Give the base URL and how it authenticates. We only call it over HTTPS.","title":"Point at your API"},"health":{"checking-sub":"Making sure your API can do what your skills need.","checking-title":"Checking your endpoint","connectivity-title":"Reached your endpoint","continue-anyway":"Continue, endpoint not live yet","status-checking":"Checking","status-fail":"Check failed","status-pass":"Working","status-unverified":"Confirmed on first use","unreachable-note":"We could not reach your endpoint. Continue to map fields from an example response, or check again once it is live.","unreachable-sub":"You can continue and map fields from an example response.","unreachable-title":"Your endpoint is not answering yet"},"mapping":{"example-apply":"Use this example","example-desc":"Paste a sample JSON response from this action. We use its shape to line up fields. Nothing is sent anywhere.","example-invalid":"That is not valid JSON.","example-placeholder":"{'{'} \"customer\": {'{'} \"email\": \"jo{'@'}example.com\" {'}'} {'}'}","example-title":"Map from an example response","probe-failed":"We could not read this action's fields from your endpoint. Paste an example response to map them.","subtitle":"Match each action's response to what your skills ask for. We propose, you confirm.","write-needs-example":"This action changes data, so we cannot probe it. Paste an example of what it returns to map fields."},"risk":{"account-changing":"Changes the account","money-moving":"Moves money"},"step":{"capabilities":"Capabilities","endpoint":"Endpoint"},"type":{"account":"Account","billing":"Billing","commerce":"Commerce","scheduling":"Scheduling"}},"destinations":{"connected":"Connected to {provider}","dialog-subtitle":"Gruvi creates the task in the {provider} team you pick.","dialog-title":"Where reports land","group-bug":"Bug reports","group-feature-request":"Feature requests","label-note":"Tasks get a Gruvi label so your team can filter what came from support.","load-failed":"Could not load teams from {provider}.","mirror":"Goes with bug reports: {destination}","mirror-empty":"Goes with bug reports. Pick that team first.","missing-bug-team":"Pick a team for bug reports","missing-feature-team":"Pick a team for feature requests","no-teams":"No teams came back from {provider}. Create one there, then try again.","optional":"Optional","project":"Project","project-none":"None","required":"Required","retry":"Try again","same-as-bug":"Same as bug reports","save":"Save and finish","skip":"Skip for now","step":"Destinations","subtitle":"Gruvi creates the task in the team you pick. You can change this later on the skill page.","team":"Team","team-placeholder":"Select a team","title":"Choose where reports land in {provider}","value-no-project":"{team}, no project","value-with-project":"{team}, {project}"},"detail":{"add-live":"Add live credentials","added-on":"Added on {date}.","capabilities":"What skills can do with it","check-health":"Check health","connected-account":"Connected to","connection":"Connection","credentials":"Credentials","fields-mapped":"{count} field mapped | {count} fields mapped","health-check-fail":"Health check failed","health-check-ok":"Connection reachable, checked just now","live-added":"Live credentials added","mapping":"Field mapping","no-fields":"No fields mapped yet","run-health":"Run a health check","tag-acts":"acts","tag-read":"read","tag-reads":"reads","tag-writes":"writes"},"empty":{"body":"Skills use them to look things up and take action, always within the limits you set.","title":"Connect the tools your team already uses"},"footnote":"Connections are shared. Any skill can use a connection once it is connected here, and every action is logged.","gallery":{"coming-soon":"Coming soon","connect":"Connect","connected":"Connected","request":"Request this integration","requested":"Requested"},"health":{"degraded":"Degraded · {percent}% of actions succeed","detail-title":"Health, last 14 days","excludes-sync":"Imports and syncs are not counted here. Import totals live on the Sync tab.","explain":"We only turn this green once real writes have come back without an error, so it never guesses.","explain-plain":"This only turns green after real changes succeed.","healthy":"Healthy · {percent}% of actions succeed","level":{"degraded":"Degraded","healthy":"Healthy","unverified":"Unverified"},"none":"No actions measured yet","note":{"all-clean":"{count} write run, all clean | {count} write runs, all clean","all-clean-plain":"{count} change made, no errors | {count} changes made, no errors","mostly-clean":"{success} of {total} write runs clean","mostly-clean-plain":"{success} of {total} changes went through","read-only":"Read only so far, first write confirmed on use","read-only-plain":"No changes made yet","read-only-short":"Read only so far","samples":"{count} write run so far, still confirming | {count} write runs so far, still confirming","samples-plain":"{count} change made so far, still checking | {count} changes made so far, still checking","some-failed":"{failed} of {total} write run failed | {failed} of {total} write runs failed","some-failed-plain":"{failed} of {total} change failed | {failed} of {total} changes failed"},"strip-end":"Today","strip-start":"14 days ago","unhealthy":"Unhealthy · {percent}% of actions succeed"},"lane":{"read-tag":"on demand","reads-caption":"Available to {agent} once the customer verifies","reads-head":"Reads · on demand","write-tag":"through skills","writes-caption":"Only ever run inside a skill you approve","writes-head":"Writes · through skills"},"live":{"description":"Add live credentials for {name}. Gruvi checks them against the live system, and nothing switches until you move each skill to live yourself.","submit":"Add and check","title":"Add live credentials","unhealthy":"The live credentials failed the health check."},"loyalty":{"dashboard-link":"Manage coupons in Stripe","helper":"Paste the ID of a coupon from your Stripe dashboard.","label":"Coupon ID","nav":"Loyalty coupon","placeholder":"loyal10","save":"Save coupon","subtitle":"Choose the Stripe coupon {agent} may apply when a customer earns a loyalty discount. You create and price the coupon in Stripe, so {agent} can never choose or change the discount itself.","title":"Loyalty coupon"},"mode":{"live":"Live","sandbox":"Sandbox"},"nav":{"capabilities":"What it can do","health":"Health","used-by":"Used by {count} skill | Used by {count} skills"},"oauth-done":{"destinations-single":"Reports go to {destination}.","destinations-split":"Bug reports go to {bug}. Feature requests go to {feature}.","skill-bound":"{skill} is set up to use this connection.","summary":"Skills that use {provider} can now run with this connection. You can close this window.","title":"{provider} is connected"},"outbound":{"admins-only":"Admins only","attn":{"ambiguous-body":"Introducing {name} paused here. Linking to the wrong record would tie them to the wrong data. Pick the right one, or dismiss to leave them unlinked.","ambiguous-body-plain":"More than one {provider} record matches {name}. Pick the right one, or dismiss to leave them unlinked.","ambiguous-kind":"Ambiguous match","ambiguous-kind-plain":"More than one match","ambiguous-title":"Pick the record for {name}","dismiss":"Dismiss","dismiss-unlinked":"Dismiss, leave unlinked","failed-attempted":"Attempted {time}","failed-kind":"Parked failure","failed-kind-plain":"Failed","failed-title":"Create failed for {name}","failed-title-plain":"Could not add {name}","open-record":"Open record","retry":"Retry","use-record":"Use this record"},"divider":"Outbound","divider-plain":"Sending back","enable":{"choose-one":"Choose one","companies-count":"{count} company | {count} companies","confirm":"Turn on outbound","confirm-plain":"Turn on","continue":"Continue","customers-count":"{count} customer | {count} customers","disclosure-body":"It lets Gruvi recognise the companies it created so it never makes a duplicate. You will see it in your {provider} company property list. It holds no business data.","disclosure-title":"Gruvi adds one company property","fresh-body":"Leave today's qualifying customers alone. Only push customers verified from now on.","fresh-body-plain":"Today's customers stay as they are. Customers verified from now on are added.","fresh-title":"Start fresh","fresh-title-plain":"Only new customers","push-body":"Introduce the {customers} and {companies} that qualify today, then keep pushing new ones.","push-body-plain":"Adds the {customers} and {companies} right away, then keeps adding new ones.","push-title":"Push them now","push-title-plain":"Add them now","qualify-line":"{customers} and {companies} qualify today, counted by the same rule new pushes use.","qualify-line-plain":"{customers} and {companies} aren't in {provider} yet.","step1-body":"Gruvi will create a {provider} contact and company the first time it meets a verified customer the CRM has never seen, then step back and let sync keep them current. It never edits or deletes a record it did not just introduce.","step1-body-plain":"Gruvi adds new verified customers to {provider} as contacts and companies. It never changes or deletes anything else.","step1-body-sync":"Gruvi adds new verified customers to {provider} and keeps mapped fields up to date. It never deletes anything.","step1-of":"Step 1 of 2 · grant access","step1-title":"Turn on outbound create","step1-title-plain":"Send customers to {provider}","step2-body":"{provider} granted write access and the gruvi_external_key property is in place. Some customers already qualify. Choose whether to introduce them now, or only push customers verified from here on.","step2-body-adds":"The {customers} and {companies} not in {provider} yet are added, then every new verified customer.","step2-body-plain":"Some of your customers aren't in {provider} yet. Choose what happens to them.","step2-note":"Nothing is pushed until you choose. Neither option is selected for you.","step2-note-plain":"Nothing is added until you choose.","step2-of":"Step 2 of 2 · backfill or start fresh","step2-of-confirm":"Step 2 of 2 · turn on","step2-of-plain":"Step 2 of 2 · choose who to add","step2-title":"Write access granted","step2-title-plain":"Access approved","upgrade":"Upgrade access in {provider}"},"head-sub":"Introduce verified customers the CRM has never seen","head-sub-adds":"Adds verified customers the CRM doesn't have yet","head-title":"Create records in {provider}","head-title-plain":"Send customers to {provider}","needs":{"lede":"You opted in, but {provider} has not granted write access yet. Nothing is queued and nothing has been created. Finish the upgrade to start introducing verified customers.","lede-plain":"{provider} hasn't granted write access yet. Finish the upgrade to turn this on.","note":"Outbound stays off until the write scopes land. A later read-only reconnect drops it back into this state automatically.","upgrade":"Upgrade access in {provider}"},"off":{"enable":"Enable","enable-plain":"Turn on","lede-sync":"Gruvi adds new verified customers to {provider} and keeps mapped fields up to date. It never deletes anything.","lede":"When a verified customer arrives that {provider} has never seen, Gruvi can create their contact and company, link them, then step back and let sync keep them current. Gruvi never edits or deletes a record it did not just introduce.","lede-plain":"Gruvi adds new verified customers to {provider}. It never changes or deletes anything else.","trust":"Only verified customers cross over. Unverified chat visitors are never pushed, no matter how complete their profile looks.","trust-plain":"Only verified customers are added."},"on":{"companies-added":"Companies added","companies-introduced":"Companies introduced","contacts-added":"Contacts added","contacts-introduced":"Contacts introduced","ledger-caption":"Counted from real records Gruvi created, not jobs queued.","needs-attention":"Needs attention · {count}","pause":"Pause outbound","pause-plain":"Pause sending"},"pause-confirm":{"body":"Gruvi stops introducing new records to {provider}. Records already created stay, and sync keeps them current. You can turn it back on anytime.","body-plain":"Gruvi stops adding new records to {provider}. Existing records stay. You can turn it back on anytime.","confirm":"Pause outbound","confirm-plain":"Pause sending","title":"Pause outbound create?","title-plain":"Pause sending to {provider}?"},"pill":{"needs":"Off · needs access","off":"Off","on":"On"}},"panel":{"capabilities-lane-sub":"Reads become tools {agent} uses on demand. Writes only run inside a skill you approve. The state on the right is the honest answer to \"why doesn't {agent} have this.\"","capabilities-lane-sub-plain":"Reads run when {agent} needs them. Writes run only inside a skill you approve.","capabilities-lane-title":"What this connection can do","credentials-sub":"Two keys, two worlds. Sandbox rehearses against test data; live is the one that acts for real.","credentials-sub-plain":"Sandbox keys use test data. The live key changes real data.","health-sub":"Measured from real write runs on the live key, so it never guesses.","health-sub-plain":"Counts the changes made in this tool over the last 14 days.","stat-changes":"Changes made","stat-clean":"Returned clean","stat-failures":"Failures","stat-succeeded":"Succeeded","stat-write-runs":"Write runs","used-by-sub":"Each skill links straight to its editor."},"powers":"Powers {count} skill | Powers {count} skills","provider":{"generic-description":"Let skills look things up and take action in this tool.","hubspot":{"description":"Sync contacts and companies into Customers, kept up to date automatically."},"pipedrive":{"description":"Sync people and organizations into Customers once this connector ships."},"salesforce":{"description":"Sync contacts and accounts into Customers once this connector ships."},"shopify":{"description":"Look up a customer's orders and update shipping addresses from the conversation."},"stripe":{"description":"Let skills look up charges and propose refunds."}},"remove":{"confirm":"Remove","description":"Skills that use this connection will stop being able to act with it. You can connect it again later.","title":"Remove {name}?"},"rotate":{"description":"Paste the new key. It is checked against {name} before skills act with it.","submit":"Rotate key","title":"Rotate the live key for {name}","unhealthy":"The key was saved but its check failed. Fix it or rotate again before skills act with it."},"row":{"manage":"Manage","remove":"Remove connection","toggle-details":"Toggle connection details"},"sandbox":{"description":"A test-mode key. Skills rehearse against test data with it and nothing real moves.","submit":"Add sandbox key","title":"Add a sandbox key for {name}","unhealthy":"The key was saved but its check failed. Fix it or rotate again before skills rehearse with it."},"shopify":{"oauth":{"approve":"You approve the access on Shopify's own screen and can revoke it there any time.","connect":"Connect Shopify","read-only":"Reads order status and tracking. Nothing changes in your store.","redirect-note":"You will be sent to Shopify to approve, then brought right back.","subtitle":"One click on Shopify's own approval screen.","title":"Connect your Shopify store"},"step":{"connect":"Connect"}},"skill-status":{"active":"Live","archived":"Archived","draft":"Draft","paused":"Paused"},"slot":{"live-missing":"Live not added yet","sandbox-missing":"Sandbox not added"},"soon":{"custom-api":{"description":"Point at any HTTPS endpoint and map its fields yourself.","name":"Custom API"},"mcp-server":{"description":"Connect any tool that speaks MCP, with per-tool controls.","name":"MCP server"},"zapier":{"description":"Reach thousands of apps through a single connection.","name":"Zapier"}},"subtitle":"Connect the tools your skills use, and see how each one is doing.","title":"Connections","used-by":"Used by {count} skill | Used by {count} skills","used-by-empty":"No skills use this connection yet.","used-by-row":{"draft":"Draft, not yet rehearsed","runs":"Ran {count} time this week | Ran {count} times this week"},"used-by-title":"Used by these skills","waiting":{"bind":"Connect {provider} below to bind it.","cta":"Connect {provider}","detail":"is installed as a draft and waiting for a {type} connection."},"wizard":{"back-to-connections":"Back to connections","concept":{"billing-id":{"label":"Billing id","why":"The customer id in this tool"},"customer-email":{"label":"Customer email","why":"How a skill finds the right customer"},"order-number":{"label":"Order number","why":"Which order a skill looks up"},"payment-method":{"label":"Payment method","why":"How the customer paid"},"refund-status":{"label":"Refund status","why":"Whether a charge has been refunded"}},"credentials":{"check":"Check connection","helper":{"generic":"Paste the credential above. Skills only use the access it grants.","stripe":"Restricted keys work. We need charges read and refunds write."},"pinned-context":"{skill} is waiting on this. It needs: {capability}.","where":"Where do I find this?"},"done":"Done","health":{"caption":"This takes a few seconds.","check-again":"Check again","checking-sub":"Making sure {name} can do what your skills need.","checking-title":"Checking the key","continue":"Continue","fix-sub":"Some of the access your skills need is missing.","fix-title":"One thing to fix","generic":{"checking":"Checking","connectivity":{"fail":"Could not reach {name}","fix":"Check the key and try again. It could not reach {name}.","pass":"Connected","title":"Reached {name}","unverified":"Not checked"},"read":{"fail":"Read access missing","fix":"This key cannot read what your skills need. Create a key with read access, then paste it and check again.","pass":"Read access granted","title":"Can read your data","unverified":"Confirmed on first use"},"write":{"fail":"Write access missing","fix":"This key cannot make the changes your skills need. Create a key with write access, then paste it and check again.","pass":"Write access ready","title":"Can make changes","unverified":"Confirmed on first use"}},"stripe":{"connectivity":{"fail":"Could not reach Stripe","fix":"Check the key and try again. It could not reach Stripe.","pass":"Key authenticated","title":"Reached Stripe","unverified":"Not checked"},"read":{"fail":"This key cannot read charges","fix":"Create a restricted key in Stripe with charges read access, then paste it and check again. The rest of the key stays as it is.","pass":"Charges read granted","title":"Key can read charges","unverified":"Confirmed on first use"},"write":{"fail":"This key cannot create refunds","fix":"Create a restricted key in Stripe with refunds write access, then paste it and check again. The rest of the key stays as it is.","pass":"Refunds write ready","title":"Key can create refunds","unverified":"Confirmed on first use"}}},"mapping":{"confirm":"Confirm mapping","empty":"This connection needs no field mapping.","needs-match":"{count} field still needs a match | {count} fields still need a match","pick-field":"Pick a field","subtitle":"Match {name} fields to what your skills ask for. We propose, you confirm.","title":"Match the fields"},"mode":{"label":"How should this connection run","live":{"desc":"Skills act on real customers and real charges from the first run.","title":"Go straight to live"},"sandbox":{"desc":"Uses {name} test mode. Skills rehearse with test data and nothing real moves. Recommended.","title":"Start in sandbox"}},"ready":{"actions":"Actions available","bind":"Bind connection","bound":"Bound","caption-live":"Move each skill to live from its own page when you are ready.","caption-sandbox":"Switch to live from the connections page once rehearsals look right.","fields-mapped":"Fields mapped","mode":"Mode","needs":"Needs {capability}","title-live":"{name} is connected live","title-sandbox":"{name} is connected in sandbox","waiting-subtitle":"Bind the connection to let them run, or do it later from each skill.","waiting-title":"{count} skill was waiting for this | {count} skills were waiting for this"},"step":{"credentials":"Credentials","health":"Health check","mapping":"Field mapping","ready":"Ready"},"title":"Connect {name}","title-scoped":"Connect {name} so {skill} can {capability}"}},"connections-banner":{"cta":"Connect","description":"Your skills act through the tools you connect here, from refunds in Stripe to orders in Shopify.","title":"Connect your tools"},"dependency":{"connect":"Connect","mode":{"live":"live","sandbox":"sandbox"},"needs":"Needs a {capability}","needs-provider":"Needs {provider}"},"detail":{"approvals":{"section-title":"Who approves its actions"},"autonomy-act":"Acts within limits","autonomy-assess":"Assesses and leaves a note","autonomy-propose":"Proposes, a person approves","back":"Back to skills","connection-acts":"runs {capability}","connection-reads":"Reads {capabilities}","connection-subtitle":"Where this skill is allowed to act, and what it always asks first.","connection-title":"Connection and consent","consent-approve-body":"{lead} Each action parks as a proposal until a teammate reviews it.","consent-approve-lead":"An operator approves every run.","consent-auto-body":"{lead} Within the configured caps, on approved channels, once identity is verified. Anything bigger waits for an operator.","consent-auto-lead":"Small actions run on their own.","consent-confirm-body":"{lead} Nothing runs until the customer says yes to the exact terms, in the conversation.","consent-confirm-lead":"The customer confirms first.","consent-idempotent-body":"{lead} Every action carries a key that makes retries safe. A hiccup can never run it twice.","consent-idempotent-lead":"Never twice.","danger-description":"Deleting stops the skill immediately and cancels any runs still in progress. This cannot be undone.","danger-heading":"Delete this skill","danger-title":"Danger zone","delete":"Delete skill","delete-dialog-description":"The skill stops right away and every run still in progress is canceled. This cannot be undone.","delete-dialog-title":"Delete this skill","delete-failed":"Could not delete this skill. Try again.","discretion-clause-title":"Room for judgment","discretion-logged":"Every use is logged as an exception, not a rule","discretion-subtitle":"Sanctioned exceptions, always logged as exceptions.","discretion-title":"Where the team may bend the rules","edit":"Edit skill","follows-policy":"Follows {policy} {version}","gate-source-conversation":"from the conversation","gate-source-internal":"from Gruvi","gate-source-provider":"from {provider}","gates-onfail-escalate":"If a check fails, the thread goes to a person with everything collected attached.","gates-onfail-mixed":"If a check fails, {name} declines politely or hands the thread to a person, depending on the rule.","gates-onfail-reply":"If a check fails, {name} declines politely and explains which rule applied.","gates-subtitle":"All of these must pass before the skill moves forward.","gates-title":"Checks before acting","hard-limits-caption":"These run as checks in code. The AI cannot talk its way around them.","hard-limits-subtitle":"The guardrails that hold no matter what a conversation asks for.","hard-limits-title":"Hard limits","health-healthy":"Healthy","health-unhealthy":"Unhealthy","health-unknown":"Not checked","identity":{"anyone":{"description":"Anyone in the chat can use this skill, including a visitor who has never signed in and has proved nothing about who they are.","label":"Anyone in the chat"},"error":"That change could not be saved. Try again.","locked":"This skill works with a customer's own account, so it always verifies first.","locked-proof":"This skill asks customers to prove who they are, so it always verifies first.","section-subtitle":"Whether a customer has to be verified before this skill does anything for them.","section-title":"Who can use it","verified":{"description":"A customer counts as verified when they write in from their own email address, your app signs them in, or they type a code the agent sends them.","label":"Verified customers only"}},"map-subtitle":"Generated from the skill itself, so it never drifts. Edit the skill and the map redraws.","map-title":"How this skill decides","mapping-confirmed":"Confirmed","more-actions":"More actions","newer-version":"v{version} available","not-found":"This skill does not exist or was removed.","nudge":{"action-hint":"Connect {provider} and it can start rehearsing on your real test data.","connect":"Connect {provider}","destinations":"{provider} is connected. Choose where this skill's reports land.","destinations-action":"Choose where reports land","needs":"This skill needs {provider} to {capabilities}.","needs-generic":"This skill needs {provider} to work.","sample":"Or {link}.","sample-link":"rehearse on sample data instead","waiting":"This skill is waiting on a {type} connection.","your-api":"your API"},"pause":"Pause","pause-failed":"Could not pause this skill. Try again.","publish":"Publish changes","req-example":"Example:","req-verified-identity":"Verified identity","req-verified-identity-desc":"A 6-digit code sent to the account email. Trusted email senders skip this step. Without it, account data stays out of reach.","requirements-subtitle":"Every requirement below comes from the policy. Some are checked by plain rules, some are judged by AI.","requirements-title":"What {name} collects","reference-photos":{"lost-clear":"Clear","lost-clear-failed":"That could not be cleared. Try again.","lost-many-plural":"{count} photo is no longer available, so the skill has stopped comparing against it. Reviews carry on with the rest, and may be less accurate until you add more. | {count} photos are no longer available, so the skill has stopped comparing against them. Reviews carry on with the rest, and may be less accurate until you add more.","lost-one":"One photo is no longer available, so the skill has stopped comparing against it. Reviews carry on with the rest, and may be less accurate until you add another.","remove-action":"Remove","remove-description":"The skill stops comparing customers' photos against it. You can add another at any time.","remove-title":"Remove this photo?","section-subtitle":"What a customer's photo is compared against before this skill accepts it.","section-title":"Reference photos","state-empty":"No photos yet. The skill reviews photos against your written standard on its own.","state-many":"Every photo a customer sends is compared against these {count}.","state-one":"Every photo a customer sends is compared against this one."},"resume":"Resume","resume-failed":"Could not resume this skill. Try again.","review-subtitle":"{count} extracted detail needs your decision before this skill can go live. | {count} extracted details need your decision before this skill can go live.","review-title":"Review before publishing","run-action-failed":"Action failed","run-action-simulated":"Action simulated","run-action-succeeded":"Action completed","run-discretionary":"Discretionary exception","run-mode-subtitle":"Choose how much this skill does before a person steps in.","run-mode-title":"How it runs","run-no-customer":"No customer","run-outcome":{"abandoned":"The conversation moved on","canceled":"Canceled","collecting":"Still collecting details","completed":"Resolved by the policy","escalated":"Handed to a person","executing":"Taking the action","expired":"Expired without completing","failed":"The action failed","fetching":"Looking things up","gathering":"Collecting what the policy needs","handed-off":"Handed to a person","proposed":"Waiting for an operator to approve","queued":"Waiting for another skill to finish","ready":"Everything collected","resolved":"Resolved","retrying":"Retrying the action","waiting-on-approval":"Waiting for approval","waiting-on-customer":"Waiting on the customer"},"run-status":{"abandoned":"Abandoned","canceled":"Canceled","collecting":"Collecting","completed":"Completed","escalated":"Escalated","executing":"Executing","expired":"Expired","failed":"Failed","fetching":"Fetching","gathering":"In progress","handed-off":"Handed off","proposed":"Awaiting approval","queued":"Queued","ready":"In progress","resolved":"Resolved","retrying":"Retrying","waiting-on-approval":"Waiting on approval","waiting-on-customer":"Waiting on customer"},"runs-empty":"This skill has not run yet.","runs-on":"Runs on {provider}","runs-subtitle":"The last few times this skill ran, straight from the run log.","runs-title":"Recent runs","sections":{"activity":"Activity","approvals":"Approvals","danger":"Danger zone","overview":"Overview","review":"Review","rules":"Rules"},"share-label":"{names} share this skill","share-label-single":"{name} runs this skill","tag-ai":"Judged by AI","tag-required":"Required","tag-rule":"Checked by rule","visibility":{"error":"That change could not be saved. Try again.","own-words":{"description":"The agent explains the rule in its own words, without quoting the text.","label":"Explain in own words"},"private":{"description":"The agent applies the rules silently and never mentions that rules exist.","label":"Keep rules private"},"quote":{"description":"The agent may quote this skill's rules to the customer word for word.","label":"Quote the rules"},"rules-heading":"What customers see of the rules","section-subtitle":"How much of this skill's rules a customer may see when the agent explains a decision.","section-title":"Rule visibility"}},"documents":{"editor":{"agent-fallback":"your agent","body-placeholder":"Write the rules your agent should follow, one per line.","rules-hint":"Plain writing is fine. Keep exact numbers and timeframes.","section-asks-for":"What {name} asks for","section-resolution":"Once {name} has everything","section-rules":"The rules","section-when":"When to use it","title-label":"Title","title-placeholder":"Refund requests","when-hint":"One sentence is enough. It matches customer messages in any language.","when-to-use-placeholder":"A customer asks for a refund or their money back"},"fields":{"add-detail":"Add a detail","description":"Description","description-placeholder":"Extra guidance for your agent on what to collect.","edit-details":"Edit details","example":"Example","example-inline":"e.g. {example}","example-placeholder":"#10234","label":"Label","label-placeholder":"Order number","move-down":"Move down","move-up":"Move up","private":"Private","private-hint":"Private details are collected through a secure form and stay masked for your team.","remove":"Remove","required":"Required"},"ladder":{"step-answers":"{name} answers with them","step-answers-description":"Quotes the right rule when a customer asks. Working now.","step-runs":"{name} runs the whole process","step-runs-description":"Collects the details, checks them against your rules, then acts or escalates for approval. You review every step before it goes live.","step-written":"The rules are written down","step-written-description":"Versioned here in Knowledge. Edits take effect on save.","subtitle":"Written rules become answers today, and a hands-on Skill on Scale.","title":"What {name} does with this policy"},"readback":{"empty":"Tell me when to step in and I'll read this back to you as we go.","ending-escalate":"hand it to a teammate","ending-reply":"answer them","lead":"Here's what I understood:","sentence":"When {when}, I'll ask for {fields}, check it against your rules, and {ending}.","sentence-no-fields":"When {when}, I'll check it against your rules and {ending}."},"resolution":{"escalate-hint":"With everything {name} collected.","escalate-note-label":"Note for your team","escalate-note-placeholder":"What should your team know when this reaches them?","escalate-title":"Hand off to your team","reply-hint":"Answers from the rules above.","reply-title":"Reply to the customer"}},"editor":{"autonomy":{"consent-hint":"Editable. This is the exact wording the customer reads.","consent-lead":"Before {name} acts, the customer sees:","consent-placeholder":"The exact words the customer reads before the action runs","error-generic":"Could not change the autonomy level. Try again."},"back":"Back to skill","bind-connection":"Use {name}","bind-error":"Could not bind the connection. Try again.","connection-powers-action":"Powers the action this skill ends in","connection-powers-fetches":"Powers the lookups this skill makes","discretion-add":"Add an exception","discretion-approver-admin":"An admin","discretion-approver-label":"Who approves","discretion-approver-operator":"Any teammate","discretion-bounds-label":"Bounds","discretion-bounds-placeholder":"The most an exception may grant","discretion-empty":"No exceptions. The AI follows the rules with no room for judgment.","discretion-remove":"Remove exception","discretion-situation-label":"When","discretion-situation-placeholder":"The situation that justifies an exception, in plain words","discretion-subtitle":"Sanctioned exceptions the AI may offer. Each one is sent to the named approver and never runs on its own.","discretion-title":"Room for judgment","document-link":"This skill follows {policy}. Edit the policy document to change the words.","layer-locked-act":"Actions are locked, so live conversations stop before running the action until it is enabled.","layer-locked-body":"You can still edit this skill and try it out in the sandbox. To go live on the steps below, Gruvi needs to enable them for your workspace.","layer-locked-fetch":"External data access is locked, so live conversations skip the external lookups until it is enabled.","layer-locked-title":"Some power is locked for this workspace","mappings-confirm":"Confirm mappings","mappings-description":"How this connection's fields line up with what the skill collects. Confirm to store them.","mappings-empty":"The connection proposed no mappings.","mappings-error":"Could not review field mappings. Try again.","mappings-title":"Field mappings","no-connection":"No {provider} connection exists in this workspace yet. Add one in settings, then bind it here.","power":{"bound-note":"{provider} connected. Its reads are now available to {agent} everywhere, not just in this skill.","connect":"Connect {provider}","explain-unconnected":"This skill works out its steps either way. It just cannot act on real data until a connection is set up.","health-chip":"{provider} · {mode} · {health}","live-pointer":"Runs against {provider} test mode. Switch this connection to live from the connections page when rehearsals look right.","mapping-review":"{count} fields mapped · Review mapping","need":"Needs a {category} connection that can {capabilities}.","need-connected":"{capabilities} for this skill.","need-generic":"Needs a connection that can {capabilities}.","not-connected":"Not connected","section":"What this skill can touch","subtitle":"Where the skill reads and acts.","use-sample":"Use sample data for now"},"readiness":{"capability-gap":"Not yet exercised: {capabilities}.","count-failing":"{count} failing","count-pending":"{count} pending","empty":"No scenarios yet. They appear as the skill takes shape.","failing":"{names} failing","gate-blocked":"Publishing is blocked until the required scenarios pass.","informational":"These results are informational for this skill.","last-run":"Last run {when}","preparing":"Preparing scenario","regressed":"Regressed","run":"Run","run-all":"Run all","status-error":"Error","status-green":"Passing","status-pending":"Pending","status-red":"Failing","status-stale":"Stale","subtitle":"Scenario coverage for this skill.","summary":"{green} of {total} scenarios green | {green} of {total} scenario green | {green} of {total} scenarios green","title":"Readiness"},"review-mappings":"Review field mappings","sample":{"customer":"Sample customer","description":"{name} answers from a realistic sample customer instead of a live connection. Good for rehearsing the flow before you connect.","error":"Could not switch the data source. Try again.","pill":"Sample","result-error":"Error","switch-back":"Switch back to a connection","title":"Sample data mode"},"save":"Save changes","save-error":"Could not save the skill. Try again.","section-connection":"Where it connects","section-consent":"Consent and approval","title":"Edit instructions","try-it-out":"Try it out"},"empty":{"body":"Teach your AI team its first skill. Start from a short interview, or extract one from a policy document you already have.","body-viewer":"Skills appear here once a teammate builds or installs one.","title":"No skills yet"},"empty-state":{"body":"Describe it in a short interview, or start from a policy document you already have.","browse":"Browse the marketplace","build":"Build it together","build-body":"Your AI team handles the whole conversation: asking, checking, and acting on its own.","build-cta":"Build a skill","build-headline":"Build your first skill","description":"Describe it in your own words, start from a template, or install a ready-made skill from the marketplace. Everything begins as a draft your team rehearses before it goes live.","path-draft":"A new skill starts here, safe to change.","path-live":"It performs on its own once you publish.","path-testing":"Your team rehearses it in the sandbox.","text":"Start from text","title":"Teach your AI team its first skill"},"flow":{"collect-title":"Collects what it needs","collect-title-checks":"Checks what has to be true first","collect-title-verified":"Checks it is really them and collects what it needs","collect-title-verify-only":"Checks it is really them","collects-and-verifies":"Collects and verifies","connect-after":"Connect after installing","connected":"{provider} connected","does-the-work":"Does the work","done":"Done","edit-in-chat":"Edit in chat","group-needed":"Always asks for","group-optional":"When the customer has it","how-it-runs":"How this skill runs","identity-chip":{"challenge":"A code by email","channel":"The email on the thread"},"manage":"Manage","section-title":"What this skill does","starts-when":"Starts when","then":"Then","trigger-conversation-title":"A customer brings this up in a thread","trigger-event-desc":"Runs on its own the moment the signal fires, before anyone has to ask.","trigger-event-title":"A matching support signal comes in"},"home":{"search":"Search skills","search-empty":"No skills match your search.","view-all-skills-plural":"View all {count} skill | View all {count} skills"},"identity":{"assurance":{"challenge":"a one-time code as proof","channel":"the channel they wrote from as proof","none":"nothing to prove it"},"subject":{"account-holder":"the account holder","conversation-participant":"the person in the conversation","none":"anyone in the conversation"}},"import":{"acknowledge":"Looks right","acknowledged":"Acknowledged","convert":{"action":"Convert to Skill","ask-admin":"Upgrading is managed by your workspace admins. Ask them to visit the Plans page.","included-note":"Included in the {tier} plan","locked-tooltip":"Convert to Skill is on the Scale plan. Your agent drafts the Skill from these rules, and you review it before it runs.","not-now":"Not now","requires-permission":"You need the manage skills permission to convert this policy.","see-plan":"See the Scale plan","upgrade-description":"Today {name} quotes your rules. As a Skill, it handles the request end to end.","upgrade-point-1":"Collects the details it needs from the customer","upgrade-point-2":"Applies your rules exactly as written","upgrade-point-3":"Acts on the outcome or escalates to you for approval","upgrade-title":"Let {name} run this policy"},"fidelity-description":"These numbers and durations were in your text but may not have carried over exactly. Confirm them in the rules.","fidelity-heading":"Double-check these","questions-description":"Your text leaves these open. Adjust the rules if needed, then settle each one.","questions-heading":"Questions your policy doesn't answer","settle":"Settle","source-heading":"Source text","source-highlight-count":"{count} to review"},"layers":{"locked-chip":"Locked for this workspace"},"new":{"action":"New skill","build-description":"Answer a few short questions and watch the skill take shape","build-title":"Build it together","extract-description":"Best for existing policy docs. Gruvi splits the document into skills and double-checks every number with you first.","extract-title":"Convert a whole document","gated-footer":"Creating your own skills comes with Scale","interview-description":"Best for one skill at a time. Tell Gruvi the job and it drafts the skill as you talk.","interview-title":"Describe it in chat","store-row":"Install from the skill store","menu-title":"Teach your team a new skill","recommended":"Recommended","scratch-description":"An empty skill you shape step by step","scratch-error":"That draft could not be created. Try again.","scratch-title":"Start from scratch","template-description":"Install a ready-made skill your team learns in minutes","template-picker":{"empty":"No templates are available yet.","error":"That template could not be copied. Try again.","subtitle":"Pick a proven skill to copy. Everything in it stays yours to change.","title":"Start from a template"},"template-subtitle":"Begin with a proven skill and adjust it to your rules","template-title":"Start from a template","upgrade":"Upgrade"},"path-to-live":{"draft-current":"Installed, not published","draft-done":"Installed","live-blocked":"Needs live keys on {provider}","live-done":"Handling conversations","live-paused":"Paused, not handling conversations","live-upcoming":"Publish to go live","ready-current":"Rehearsed, waiting to go live","ready-done":"Ready to go live","ready-upcoming":"Waiting on rehearsal","testing-current":"Try it, then go live when it feels right","testing-done":"Rehearsed","testing-upcoming":"Rehearse before going live","title":"Path to live","try-cta":"Open rehearsal","try-description":"Chat with the skill on sample data or your sandbox connection. Nothing touches a real customer.","try-section":"Try it before it's live","try-title":"Try it out"},"persona":{"act":"Fred","converse":"Chloe","fetch":"Anna"},"preview":{"act-connection":"{capability} in {type}","act-internal":"{capability} in Gruvi","action-line":"Runs {capability} through a {type} connection.","condition":{"and":"and","or":"or"},"discretion-approver-admin":"An admin approves each time.","discretion-approver-operator":"A teammate approves each time.","discretion-bounds":"Within: {bounds}","evidence-required":"Required","fetch-connection":"{capability} from {type}","fetch-internal":"Gruvi data","identity-line":"{name} treats this as a request from {subject}, and takes {assurance}.","needs-connection":"Needs a connection","needs-connection-hint":"Connect the {type} account in the editor before this skill can act. Until then it hands off to your team.","operator":{"at-least":"is at least","at-most":"is at most","contains":"contains","equals":"is","greater-than":"is over","in":"is one of","is-false":"is false","is-present":"is known","is-true":"is true","less-than":"is under","not-equals":"is not","older-than-days":"is older than {days} days","within-days":"is within the last {days} days"},"section-action":"Then it acts","section-discretion":"Room for judgment","section-evidence":"Proof to collect","section-fetches":"{name} looks up","section-gates":"Only when","section-steps":"What {name} does, in order","section-verification":"Identity check","verification-line":"{name} verifies the customer's identity before touching account details."},"publish":{"completion-escalate":"Hands the thread to your team","completion-reply":"Answers the customer","consequence":"Publishing makes this exact configuration live for every customer conversation. Runs already in progress finish on the current version.","diff-action-added":"Action added: {capability}","diff-action-changed":"Action retargeted to {capability}","diff-action-removed":"Action removed","diff-added":"New {noun}","diff-autonomy-changed":"Autonomy changed","diff-completion-changed":"Ending changed","diff-connection-changed":"Connection binding updated","diff-consent-changed":"Consent wording updated","diff-header":"{count} change since version {version} | {count} changes since version {version}","diff-identity-added":"Identity check now required","diff-identity-changed":"Identity requirement changed","diff-identity-removed":"Identity check removed","diff-instructions-changed":"Instructions rewritten","diff-none":"No changes since version {version}","diff-removed":"Removed {noun}","diff-title-changed":"Name changed","diff-unitemised":"This skill has changed since version {version}, in a part this summary cannot name. Publishing puts the current version live.","diff-updated":"updated","diff-when-to-use-changed":"When to use this skill changed","failed":"That did not go through. Try again.","live-body":"Version {version} is handling customer conversations from now on.","live-title":"{title} is live","note-label":"Leave a note for your team (optional)","note-placeholder":"What changed, if you want to say.","note-too-long":"Keep it under {max} characters.","nothing-to-publish":"Nothing has changed since the last publish, so there is nothing to put live.","noun-check":"hard limit","noun-discretion":"discretion rule","noun-evidence":"evidence item","noun-field":"field","noun-lookup":"lookup","noun-step":"step","readiness":{"capability-coverage":"The connected {type} account can't do {capability} yet.","capability-unexercised":"A rehearsal still needs to exercise {capability} successfully.","consent-invariant":"The skill must confirm with the customer before it acts.","identity-invariant":"Identity must be verified before the skill reads a customer's account.","missing-binding":"Needs a {type} connection to run {capability}.","definition-unreadable":"This skill was saved in an older format that this version cannot read. Reinstall it from the store to fix it.","missing-destinations":"Choose where this skill's reports land in {type}.","required-scenarios-failing":"All required rehearsals must pass before this can go live.","review-findings-stale":"This skill changed after its review. Recompile it to refresh the review checklist.","review-findings-unresolved":"Confirm the extracted details flagged for review before publishing.","sample-data-source":"Switch off sample data so it runs against the real connection.","unhealthy-credentials":"Reconnect the connection, its credentials are failing.","unresolved-mappings":"Finish mapping the connection's fields before publishing."},"submit":"Publish version {version}","title":"Put \"{title}\" into action"},"purpose":{"acts":"takes the action in {provider}","acts-generic":"takes the agreed action","checks-eligibility":"checks eligibility against your records","checks-eligibility-in":"checks eligibility in {provider}","collects-details":"collects the details it needs","collects-details-and-evidence":"collects the details and supporting evidence","collects-evidence":"collects the supporting evidence","escalates":"hands the thread to your team","looks-up-in":"looks up the details in {provider}","refunds":"refunds the charge in {provider}","replies":"answers the customer","then-acts":"then takes the action in {provider}","then-acts-generic":"then takes the agreed action","then-escalates":"then hands the thread to your team","then-refunds":"then refunds the charge in {provider}","then-replies":"then answers the customer","verifies-customer":"verifies the customer"},"rail":{"act-desc":"One action on the live record, retry-safe by construction.","act-title":"Runs the {action}","act-title-refund":"Issues the refund","answering-now":"Answering now","approver":{"admin":"An admin","operator":"An operator"},"channel":{"api":"the API","chat":"chat","email":"email","slack":"Slack","telegram":"Telegram","whatsapp":"WhatsApp"},"confirm-desc":"States exactly what will happen and waits for the customer to confirm.","confirm-title":"Gets a clear yes","current-desc":"Takes shape from your answer on the left.","dest":{"approval":"Waits for operator approval","decline":"Declines politely, citing the policy","hand-to-person":"Hands to a person","retry-plural":"Asks again, up to {count} time | Asks again, up to {count} times","stop":"Stops here, nothing moves"},"discretion-footnote":"Exception: {situation}. {approver} approves each one.","done-desc-act":"The thread resolves and the full receipt lands on the run log.","done-desc-escalate":"Wraps up by handing the thread to a teammate, with everything collected attached.","done-desc-reply":"Replies with the outcome and resolves the thread.","done-title":"Done","eligibility-title":"Checks eligibility","exit":{"any-gate-fails":"Any check fails","attempts-exhausted-plural":"Still failing after {count} try | Still failing after {count} tries","check-fails":"A check does not pass","customer-says-no":"Customer says no","every-run":"On every run","fetch-failed":"No record found, or the lookup fails","gate-failed":"A check fails","verification-failed":"The code never checks out"},"fetch-desc":"Facts only, nothing changes.","fetch-title":"Looks it up in {provider}","fetch-title-internal":"Looks it up in Gruvi","gather-desc":"{items}.","gather-needs-title":"Asks for what it needs","gather-title":"Collects what the policy needs","ghost-desc":"Still to come, from your next answers.","ghost":{"eligibility-title":"What it checks","fetch-title":"What it looks up","gather-title":"What it collects"},"verify-desc":"Emails a 6-digit code and waits for it in the conversation. Skipped when the customer already wrote from a trusted email address.","verify-desc-challenge":"Sends a one-time code and waits for it in the conversation.","verify-desc-channel":"Takes the address they wrote from as proof, so nothing extra is asked.","verify-title":"Verifies it is really them","verify-title-account-holder":"Confirms they hold the account"},"rehearse":{"agent-fallback":"Assistant","approval-approve":"Approve","approval-approve-now":"Approve now","approval-arming-approve":"Approving… writes to {provider} when the timer ends","approval-arming-approve-generic":"Approving… the write goes through when the timer ends","approval-arming-approve-sample":"Approving… writes to sample data when the timer ends","approval-arming-decline":"Declining… this request closes when the timer ends","approval-closing":"Closing the request","approval-decline":"Decline","approval-decline-now":"Decline now","approval-declined-head":"Declined","approval-declined-sub":"Nothing was created. {name} is handing the thread to a teammate.","approval-done-head":"The write went through","approval-done-head-issue":"Issue filed","approval-done-sub":"{reference} was created. {name} is telling the customer now.","approval-done-sub-generic":"{name} is telling the customer now.","approval-executing":"Making the change in {provider}","approval-executing-generic":"Making the change","approval-executing-issue":"Filing the issue in {provider}","approval-executing-sample":"Recording the write against sample data","approval-expired":"This request expired before anyone decided it.","approval-failed":"The write did not go through. Nothing was created.","approval-kind-address":"Address","approval-kind-discount":"Discount","approval-kind-issue":"Issue","approval-kind-refund":"Refund","approval-kind-write":"Write","approval-moved":"This request is no longer waiting on you.","approval-pip-waiting":"Waiting","approval-state-declined":"Declined","approval-state-done":"Done","approval-stopped":"This run stopped before the write was decided.","approval-undo":"Undo · {seconds}","approval-who-sample":"sample {subject}","approval-who-sandbox":"sandbox {subject}","approval-writes-to":"writes to {provider}","approval-writes-to-sample":"writes to sample data","artifact-evidence-caption":"Screenshot the customer sent","artifact-open":"Open in {provider}","artifact-open-generic":"Open the record","artifact-open-sample":"Open the sample record","back":"Back","card-body":"This is what the skill will find when it looks it up. You are about to play the customer who asked about it.","card-caption":"This is what the skill will find when it looks it up. You are about to play the customer who placed it.","card-caption-lead":"Here is your fake order.","card-lead":"Here is your fake {subject}.","choice-fake-description":"We make one up and show it to you. Nothing touches your shop.","choice-fake-title":"Use a fake order","choice-lead":"The skill needs something to look up. Where should it come from?","choice-sandbox-description":"Practice against sandbox records. Nothing touches a real shop.","choice-sandbox-title":"Use a sandbox order","choice-unavailable-fake":"Add sample data to this skill to use a fake order.","choice-unavailable-sandbox":"Connect this skill's tools to use a sandbox order.","close":"Close","code-strip-hint":"No email goes out in a rehearsal. Use this code when asked.","code-strip-label":"Verification code","code-strip-note":"No email goes out in a rehearsal.","composer-placeholder":"Write as the customer","decision-error":"Could not send that decision. Try again.","declined-body":"You declined the write, so nothing was created and the run stopped here.","declined-title":"The rehearsal ended with a hand off","email-strip-label":"Your email address","email-strip-note":"Made up for this rehearsal. No real inbox.","fixture-tag":"Made up for this rehearsal","forecast-step-play":"Play the customer who placed it","forecast-step-see":"See the order the skill will find","forecast-title":"Then, in order","greeting":"Hi! How can I help you today?","history-handed-off":"Handed off","history-resolved":"Resolved","history-start-new":"Start a new rehearsal","history-title":"Previous rehearsals","history-transcript-body":"You are reading it back, so nothing can be sent into it.","history-transcript-title":"Rehearsal from {date}","history-transcript-title-undated":"A previous rehearsal","limit-body":"You have reached the limit for this run. Start over to keep going.","limit-title":"That is a long rehearsal","no-channel-body":"Add a live chat channel to rehearse this skill in the widget.","no-channel-title":"Chat widget not set up","order-strip-hint":"Use it when the agent asks.","order-strip-label":"Your order","outcome-handed-off":"This is where the thread would be handed off to a person.","outcome-resolved":"This is where the thread would be resolved.","outcome-waiting-approval":"Sent for a teammate's approval","pick-empty-body":"The sandbox has no {subject} to ask about. Create one there, then try again.","pick-empty-title":"Nothing to pick yet","pick-error-body":"Something went wrong reaching the sandbox. Try again.","pick-error-records":"Couldn't load sandbox records","pick-error-title":"Couldn't load sandbox orders","pick-lead":"Pick a sandbox order to ask about. Nothing here touches a real shop.","pick-manual-continue":"Continue","pick-manual-lead":"Type an order number your sandbox knows. We only read it, nothing changes.","pick-manual-placeholder":"Sandbox order number","pick-manual-subject-lead":"Type a {subject} your sandbox knows. We only read it, nothing changes.","pick-manual-subject-placeholder":"Sandbox {subject}","pick-retry":"Try again","pick-subject-lead":"Pick a sandbox {subject} to ask about. Nothing here touches anything real.","props-paused":"Paused while the run waits on your decision.","publish-error":"Could not publish this skill. Try again.","publish-note":"Published from the rehearsal panel after this skill completed a successful rehearsal. The run was watched end to end against sample data before the skill went live.","published-action":"Published","published-body":"It runs on real threads from here, and you can still edit it.","published-title":"Published. This skill is now live.","role-customer":"Customer","role-switch-line":"The run is waiting on a teammate. In this rehearsal, that is you.","role-teammate":"Teammate","safe-line":"Rehearsal. No real customer sees this.","send-error":"Could not send that message. Try again.","send-it":"Send it","send-lead":"Use one when the chat asks","sent":"Sent","skill-changed-body":"You edited the skill while rehearsing. Start over to test the new version.","skill-changed-title":"This skill changed","starter-chips-label":"Open with one of these","starter-prop-label":"Opening line","source-sample-description":"We make one up and show it to you. Nothing touches anything real.","source-sample-title":"Use a fake {subject}","source-sample-unavailable":"Add sample data to this skill to use a fake {subject}.","source-sandbox-description":"Practice against sandbox records. Nothing touches anything real.","source-sandbox-title":"Use a sandbox {subject}","source-sandbox-unavailable":"Connect this skill's tools to use a sandbox {subject}.","spine-pick":"Pick the {subject} to ask about","spine-play":"Play the customer who asked","spine-see":"See the {subject} the skill will find","spine-source":"Where it comes from","spine-source-sample":"Fake {subject}","spine-source-sandbox":"Sandbox {subject}","start-chat":"Start the chat","start-error":"Could not start the rehearsal. Try again.","start-over":"Start over","strip-label":"Your {subject}","subject-fallback":"record","subtitle":"You play the customer. No real customer sees this.","success-ask-connect-body":"This skill is live. Someone with connection access still has to connect {provider}.","success-ask-publish-body":"Ask someone with publish access to make this live for every customer conversation.","success-connect-action":"Connect {provider}","success-connect-body":"{provider} isn't connected yet. Connect it, then publish.","success-connect-live-body":"Connect {provider} and this can go live for every customer conversation.","success-first-title":"Your first rehearsal succeeded","success-live-body":"This skill is live. Nothing else to set up.","success-open-action":"Open the skill","success-open-body":"Open the skill to see where it stands.","success-publish-action":"Publish this skill","success-publish-body":"This skill is still a draft. Publishing turns it on for real threads.","success-publish-live-body":"Publish it and it is live for every customer conversation.","success-publishing-action":"Publishing","success-ready-body":"This skill is ready to publish. Ask someone with publish access to turn it on.","success-title":"Rehearsal complete","tag":"Rehearsal","title":"Rehearse","use-it":"Use it"},"safety-net":{"approval-parked-desc-every-run":"It waits for a teammate to approve before anything happens.","approval-parked-title":"The action needs sign-off","customer-declined-desc":"{name} won't move without a clear yes.","customer-declined-title":"The customer doesn't confirm","fetch-not-found-desc":"{name} stops right away, nothing is made up.","fetch-not-found-title":"No record is found","gate-declined-desc":"{name} explains why and doesn't go further.","gate-declined-title":"A check doesn't pass","gate-escalated-desc":"This one is never decided alone.","gate-escalated-title":"A check needs a closer look","if":"If","person-desc":"The thread lands in your inbox with everything collected, so no customer is left hanging.","person-title":"A person takes over","section-title":"What if something goes wrong?","then":"Then","validation-retry-desc-plural":"{name} asks again, up to {count} time. | {name} asks again, up to {count} times.","validation-retry-title":"A detail doesn't check out","verification-failed-desc":"No account data is shown, ever.","verification-failed-title":"The code never checks out"},"scale-wall":{"ask-owner":"Ask a workspace owner to upgrade to Scale.","included-in":"Included in Scale","point-describe":"Describe it in plain words and your team drafts it with you, question by question.","point-limits":"Hard limits and approvals are built in from the first answer.","point-rehearse":"Every skill arrives as a draft your team rehearses before it goes live.","reassurance":"Skills from the marketplace stay available on your current plan.","see-included":"See what's included","subtitle":"Build the skills only your business knows, in your words, on your tools and your rules.","title":"Teach your team skills of your own","upgrade":"Upgrade to Scale"},"sections":{"built-in":{"description":"Behaviors the platform runs for you, ready before your team learns a thing.","subtitle":"Housekeeping every workspace gets. No AI involved, just reliable clockwork.","title":"Built into Gruvi"},"learned":{"description":"Jobs your AI team handles on its own. Each one goes live once its gates are green.","heading":"Skills","subtitle":"Skills your team has learned. Each one performs on its own once its gates are green.","title":"Your team's skills"},"working":{"subtitle":"Taught from your policies. Open a skill to see exactly how it decides.","title":"Learned"}},"sovereign":{"knowledge":{"overview-purpose":"Hides detected personal data from AI and restores it in replies.","on-description":"Detected personal data is hidden before the AI receives it.","check-content":"Hide personal data in knowledge content","follows-mode":"When enabled, uses the mode selected above."},"audit":{"mode-aware-subtitle":"Live requests and test results. Open a row for details.","load-failed":"Could not load this information.","retry-load":"Try again","calls-description":"Newest first. Open a row to read what left.","calls-title":"Requests","column":{"entry-type":"What ran","hidden":"Taken out","would-hide":"Would have taken out","personal-details":"Personal details","latency":"Lookup time","mode":"Mode","model":"Model","restoration":"Put back","status":"Status","time":"Time"},"detail":{"description":"The text exactly as it was sent, in order.","recorded-parts-description":"Recorded parts of the AI request, in order.","shadow-recorded-parts-description":"Recorded parts of a test request. Original text was sent.","shadow-title":"What would have left for the AI","shadow-description":"This shows what would have left. The original request went out unchanged.","loading-title":"Request details","not-recorded":"Not recorded","no-entries":"This request recorded no text.","step":"Step {step}","title":"What left for the AI"},"empty":"No requests recorded yet.","kind":{"reply":"Came back from the AI","request":"Sent to the AI","shadow-request":"Would have been sent to the AI","tool-result":"Looked up for the AI"},"load-more":"Show more","nightly-clean-plural":"Nightly check, {date}: {count} request rescanned, nothing slipped through. | Nightly check, {date}: {count} requests rescanned, nothing slipped through.","nightly-hits-plural":"Nightly check, {date}: {count} request rescanned, {hits} need a look. | Nightly check, {date}: {count} requests rescanned, {hits} need a look.","nightly-none":"No nightly check has run yet.","nightly-summary":"Nightly check, {date}. {result}.","nightly-on-result":"On: {count} checked, {hits} personal details found","nightly-legacy-result":"Mode not recorded: {count} checked, {hits} personal details found","nightly-shadow-result":"Shadow: {count} previews checked, {hits} personal details found","nightly-unchecked":"Could not check {count} request | Could not check {count} requests","nightly-empty":"No requests were checked","nightly-no-report":"No nightly report yet.","nightly-loading":"Loading nightly report.","nightly-unavailable":"Could not load the nightly report.","nothing-personal":"nothing personal","open-full":"Open the full trail","open-row":"Open","page-subtitle":"The exact text that left for the AI, one row per request.","page-title":"Audit trail","put-back":{"failed":"No","ok":"Yes","pending":"Not yet","skipped":"Nothing to put back"},"ran":{"analyze_thread":"Thread analysis","classify_topics":"Topic detection","embed":"Knowledge indexing","extract_text":"File reading","generate_ack":"Acknowledgement","generate_context":"Context note","generate_reply":"Reply draft","generate_rewrite":"Rewrite","generate_summary":"Thread summary","generate_title":"Thread title","generate_translation":"Translation","other":"AI request","rerank":"Knowledge ranking","retrieve":"Knowledge search","transcribe":"Voice transcription"},"report":{"date":"Night","known-hits":"Known value hits","pattern-hits":"Pattern hits","scanned":"Rows scanned"},"reports-description":"Every night Gruvi rescans the recorded text for anything that slipped through.","reports-empty":"No nightly check has run yet.","reports-title":"Nightly checks","rules-version":"Rules version","subtitle":"Every request, exactly as it left. Never a real value.","title":"Audit trail"},"category":{"address":"Addresses","card":"Cards","company":"Companies","customer":"Names","email":"Emails","iban":"Bank accounts","phone":"Phones","psn":"ID numbers"},"category-count":{"address-plural":"{count} address | {count} addresses","card-plural":"{count} card | {count} cards","company-plural":"{count} company | {count} companies","customer-plural":"{count} name | {count} names","email-plural":"{count} email | {count} emails","iban-plural":"{count} bank account | {count} bank accounts","phone-plural":"{count} phone | {count} phones","psn-plural":"{count} ID number | {count} ID numbers"},"example":{"edit-hint":"edit this message","field-placeholder":"Type a message with a name, a phone number, or a card.","found-nothing":"Nothing here needed taking out. Try a phone number, an email, or a card number.","none-detected":"No personal data was detected.","gate":"what the AI receives","rules-only":"The model that finds names and addresses is still starting. This shows the pattern rules.","partial-detection":"Some checks could not run. Names and addresses may be missed.","unavailable":"Sovereign is not reachable right now, so nothing can be shown.","seed":"Hi, I'm John Miller, my number is 091 12 34 56 and my card 4111 1111 1111 1111 got blocked this morning.","who":"A customer writes"},"files":{"keep":"Do not send them to the AI","keep-description":"The AI will not see attachments or voice messages, so it cannot answer about them.","page-subtitle":"Photos, PDFs, spreadsheets and voice messages cannot be cleaned like text.","send":"Send them as they are","send-description":"The AI can read attachments and voice messages. Personal details inside them are not removed.","subtitle":"Photos, PDFs, spreadsheets and voice messages cannot be cleaned like text. Choose what happens to them.","title":"Files and voice messages"},"flow":{"eyebrow":"Gruvi Sovereign · Included in {plan}","headline":"Your customers' personal data never reaches the AI.","headline-detection":"Check messages for personal data.","install":"Install","install-error":"Sovereign could not be installed.","lead":"Names, phone numbers, emails, cards and addresses stay in Gruvi. The AI only ever sees this:","lead-detection":"Sovereign hides detected details from AI and restores them in replies.","locked-hint":"Part of the {plan} plan. Start a trial in one click.","step":{"files":"Files and voice","mode":"Mode","see-it-work":"See it work"},"tag-audit":"Audit trail for compliance","tag-local-checks":"Checked in Gruvi","tag-restored-details":"Details restored in replies","tag-request-history":"Request history","tag-no-pii":"No PII sent to the AI","tag-stays":"Your data stays in Gruvi","title":"Sovereign","upgrade":"Upgrade to {plan}"},"mode":{"capped":"Your plan no longer includes Sovereign, so personal data reaches the AI.","error":"That change could not be saved.","off":"Off","off-description":"Sovereign stays off until you turn it on.","on":"On","on-description":"Personal data is taken out. The AI never sees it.","page-subtitle":"The same three choices as the install. Whichever is picked is what happens.","shadow":"Shadow","shadow-description":"Nothing changes yet. Gruvi only records what it would take out, so you can check first.","since-off":"Off since {date}. Personal data reaches the AI.","since-on-plural":"On since {date}. {count} request so far. | On since {date}. {count} requests so far.","since-shadow":"Shadow since {date}. Gruvi records what it would take out; personal data still reaches the AI.","subtitle":"You can change this any time.","title":"Mode"},"page":{"install":"Install from the store","not-installed":"Sovereign is not installed in this workspace yet.","sections":{"audit":"Audit trail","files":"Files and voice","overview":"Overview"},"see-how":"See how it works","see-how-subtitle":"Type any message. This is what the AI receives."},"store":{"installed":"Installed","plan-pill":"{plan} plan"}},"status":{"draft":"Draft","live":"Live","live-edited":"Live · edited","paused":"Paused","ready":"Ready","sandbox":"Sandbox","set-up":"Set up","testing":"Testing"},"store":{"all-subtitle":"Everything on the shelf today. The gaps fill in as new skills land.","all-title":"All skills","build":{"body":"Build a custom skill from scratch and shape it to your own workflow.","cta":"Start building","plan-gate":"{plan} plan","title":"Can't find what you need?"},"builtin":{"auto-assignment":{"capability":"Routes threads","purpose":"Route each new thread to the right team or teammate as it arrives.","title":"Auto-assignment"},"csat-ratings":{"capability":"Collects feedback","purpose":"Ask customers to rate the help they got and collect the scores in one place.","title":"CSAT ratings"},"sla-policies":{"capability":"Tracks response time","purpose":"Set response and resolution targets, and track every thread against them.","title":"SLA policies"}},"by-gruvi":"By Gruvi","by-your-team":"By your team","capability":{"answers-only":"Answers only","looks-things-up":"Looks things up","takes-action":"Takes action"},"category":{"account":"Accounts","billing":"Billing","crm":"CRM","customer-experience":"Customer experience","general":"General","orders":"Orders","privacy":"Privacy","routing":"Routing","scheduling":"Scheduling","sla":"SLA"},"clear-all-filters":"Clear all filters","coming-soon":"Coming soon","experimental":"Experimental","experimental-hint":"Still being tested. It works, and it may change.","connections-filter":"Connections used","connections-filter-empty":"No connections in use yet","connections-filter-title":"Filter by connection used","crm-banner-body":"Once connected, these skills can read a customer's history and keep records in sync.","crm-banner-connect":"Connect HubSpot","crm-banner-title":"Connect HubSpot to enable HubSpot skills.","featured-eyebrow":"Featured skill","filter-all":"All","filter-empty":"No skills match these filters yet.","get":"Get","hero-subtitle":"Skills are used to automate the most repetitive actions and supercharge your support. You can install them with the click of a button and try them out before you go live.","hero-title":"The Gruvi Skill Store","in-your-team":"In your team","included":"Included","included-with-gruvi":"Included with Gruvi","install":{"approvals-title":"Who approves its actions?","connect-action":"Connect","connect-bind-failed":"The connection is saved, but the skill could not be linked to it. Open the skill to finish.","connect-error":"Connecting did not finish. Try again.","connect-later":"Connect later","connect-provider":"Connect {provider}","connect-subtitle":"It stays a draft until these are connected.","connect-title":"Connect what it needs","consequence-ask":"This skill asks a person before it changes anything.","consequence-auto":"This skill can act on its own within the limits you set, and still asks a person when a limit is hit.","continue":"Continue","destinations-save":"Save and continue","done-connect-pending":"Connect next","done-connected":"Connected","done-connection":"Connection","done-draft":"Draft","done-next":"Next","done-next-connect":"Connect {provider}, then turn it on","done-next-rehearse":"Rehearse it on sample threads","done-next-review":"Review it, then turn it on","done-note":"You can change how it runs any time from the skill.","done-runs-as":"Runs as","done-subtitle":"It is a draft, so nothing runs on real threads until you turn it on.","done-title":"{name} is installed","identity-failed":"Who can use it could not be saved. Try again.","install-failed":"The skill could not be installed. Try again.","installing-adding":"Adding it to your workspace","installing-failed-body":"Something went wrong while adding the skill. Try again.","installing-failed-title":"Install did not finish","installing-ready":"Ready","installing-retry":"Try again","mode-ask-desc":"The skill prepares each action and asks a person to approve it in the thread. Nothing changes until someone approves it.","mode-ask-name":"Ask for approval","mode-auto-desc":"The skill approves and runs its own actions within the limits you set. It still asks a person when a limit is hit.","mode-auto-name":"Approve for me","mode-locked":"Unlocking autonomy needs a workspace permission.","mode-subtitle":"This skill can take actions. Choose how much it does before a person steps in.","mode-title":"How should this skill run?","open-skill":"Open the skill","photos-add":"Add photos","photos-add-hint":"Show what it should normally look like. Drop them here or press to choose. JPG, PNG, GIF or WebP, up to 8 MB each.","photos-add-hint-paste":"Drag them in, paste with {shortcut}, or press to choose.","photos-add-more":"Add another reference photo","photos-add-short":"Add","photos-cap-full":"Already at {max}, which is the most it uses. Remove one to add another.","photos-cap-reached":"{max} of {max}, the most it uses","photos-checks-for":"Checks for","photos-count":"{count} of {max}","photos-failed":"Failed","photos-paste-empty":"There was no image in the clipboard. Copy one, or press to choose a file.","photos-paste-not-an-image":"That paste was text, not an image. Copy an image, or press to choose a file.","photos-pasted":"Pasted into {name}.","photos-payoff-full":"The agent sees all {count} before it looks at a customer's photo. That is as many as it takes.","photos-payoff-many":"The agent sees these {count} before it looks at a customer's photo.","photos-payoff-one":"The agent sees this one before it looks at a customer's photo.","photos-progress":"{percent}%","photos-refusal-dismiss":"Dismiss this message","photos-remove":"Remove this reference photo","photos-remove-failed":"That photo could not be removed. Try again.","photos-retry":"Try again","photos-skip":"Skip for now","photos-skip-consequence":"The agent still checks every photo against what this skill asks for. Without references it has nothing to compare against, so a photo of the wrong item is harder to catch. You can add them later on the skill page.","photos-skip-lead":"Skipping is fine.","photos-split":"Your photos tell it {what}. How bad it is stays with the check written under each one.","photos-split-what":"what the item is","photos-status-empty":"Without one, the agent has nothing to compare a customer's upload against.","photos-status-empty-many":"Without them, the agent has nothing to compare a customer's upload against.","photos-status-empty-many-screen":"Without them, the agent does not know what your app looks like when it reads a customer's screenshot.","photos-status-empty-screen":"Without one, the agent does not know what your app looks like when it reads a customer's screenshot.","photos-subtitle":"This skill asks customers for photos. Add a few of your own so it has something to compare them against.","photos-title":"Show the agent what it should look like","photos-title-screen":"Show the agent what your app looks like","photos-too-large":"{name} is over 8 MB. Reference photos have to be smaller than that.","photos-trimmed-many-plural":"Only {max} fit, so the last {count} was left out. | Only {max} fit, so the last {count} were left out.","photos-trimmed-one":"Only {max} fit, so the last one was left out.","photos-uncovered-many":"{count} of these have no photos yet. The agent will judge those on the check alone.","photos-uncovered-one":"Nothing yet for {name}. The agent will judge those on the check alone.","photos-uploading":"Uploading a reference photo","photos-wrong-format":"{name} is not a JPG, PNG, GIF or WebP.","photos-wrong-format-unnamed":"That is not an image. Use JPG, PNG, GIF or WebP.","recommended":"Recommended","rehearse-skip-desc":"Go straight to the skill. It still lands as a draft until you turn it on.","rehearse-skip-name":"Skip rehearsal for now","rehearse-start-desc":"Watch it handle sample threads before it touches anything real.","rehearse-start-name":"Start with a rehearsal","rehearse-subtitle":"Practice on sample threads in a rehearsal space. No test account needed.","rehearse-title":"Rehearse it first?","start-rehearsal":"Start rehearsal","step-approvals":"Approvals","step-connect":"Connect","step-destinations":"Destinations","step-done":"Done","step-identity":"Who can use it","step-installing":"Install","step-mapping":"Mapping","step-mode":"How it runs","step-photos":"Photos","step-rehearse":"Rehearse","step-send-back":"Send back","step-skill":"The skill"},"no-results":"No skills match {query}. The build card below is always here when the store comes up short.","open":"Open","persona-role":{"act":"Takes action","converse":"Speaks with customers","fetch":"Looks things up"},"placeholder":{"body":"Soon you'll install skills your team can learn in minutes, from refunds to order tracking. It's on the way.","title":"A store of ready-made skills"},"provider-role-generic":"Uses your {name} connection","publishers-soon-subtitle":"The shelf keeps growing. New makers, new tools, new skills.","publishers-soon-title":"More publishers soon","put-filters-back":"Put filters back","rating":{"average-plural":"{rating} average across {count} team | {rating} average across {count} teams","comment-add":"Add a comment","comment-edit":"Edit comment","comment-placeholder":"Share how this skill works for your team","comment-save":"Save comment","failed":"Your rating could not be saved. Try again.","invite":"Rate this skill","star-aria":"Rate {value} out of 5","your-rating":"You rated {value}"},"remove-filter":"Remove {filter}","search-clear":"Clear search","search-placeholder":"Search skills","search-whole-store":"Search the whole store","set-aside-label":"Set aside:","set-aside-lead":"No skills match \"{query}\" inside your filters.","set-aside-offer-lead":"Your filters have {count} match for \"{query}\". | Your filters have {count} matches for \"{query}\".","set-aside-offer-sub":"You are seeing the only match from the whole store, because your filters were set aside for the previous search. | You are seeing all {count} matches from the whole store, because your filters were set aside for the previous search.","set-aside-sub":"Showing the one match from the whole store instead. | Showing all {count} matches from the whole store instead.","sheet":{"built-in":"Built in","draft-lead":"Installs as a draft.","draft-rehearse-note":"You can rehearse it, and it only goes live when you turn it on.","draft-wait-note":"It waits quietly until {provider} is connected and you turn it on.","get-this-skill":"Get this skill","getting-ready":"Getting it ready","identity":"Identity check","identity-desc":"The customer is verified before anything touches money.","install-failed":"That skill could not be installed. Try again.","needs-connection":"{provider} connection","ready":"Ready","what-it-needs":"What it needs"},"show-all-skills":"Show all skills","suggestion":{"body":"asked about this recently. A skill could handle them start to finish.","count":"{count} thread | {count} threads","eyebrow":"Noticed in your threads","review":"Review"},"works-with":"Works with {app}","works-with-caption":"Works with","works-with-yours":"Works with what you have","your-filters":"your filters","zero-combination-lead":"No skills in this combination yet.","zero-combination-sub":"Drop one of these and the shelf fills back in.","zero-empty-lead":"No skills match \"{query}\".","zero-nowhere-lead":"No skills match \"{query}\", with or without your filters.","zero-nowhere-sub":"Nothing on the shelf covers this yet. Describe it once and it becomes a skill your team owns.","zero-outside-sub":"The store has one match for it outside your filters. | The store has {count} matches for it outside your filters."},"store-banner":{"body":"Install skills your team can learn in minutes, from refunds to order tracking.","browse":"Browse","description":"Ready-made skills your team can learn in minutes, from refunds to order tracking. Every one arrives as a draft.","title":"Browse the skill store"},"subtitle":"What your AI team has learned to do","suggestions":{"because":{"add-live-key":"the skill works, but it needs a live {provider} key that is not added yet.","add-live-key-generic":"the skill works, but it needs a live key that is not added yet.","coach":"the agent could help here, but verification was started and never completed.","connect":"the skill works, but it needs {connection} connected first.","connect-generic":"the skill works, but a required connection is not set up.","lead":"Because","marketplace":"the skill store has a skill for this: {skill}.","marketplace-generic":"a skill in the skill store matches this ask.","missing-skill":"no skill covers this, and nothing in the skill store matches it either.","setup":"{skill} is installed but still a draft, so it cannot run yet.","setup-generic":"the matching skill is installed but still a draft, so it cannot run yet."},"card":{"conversations":"{count} conversation | {count} conversations","conversations-before-fix":"{count} conversation before the fix | {count} conversations before the fix","filled":"Resolved {time}","filled-line":{"add-live-key":"A live key was added, so the skill can run for real.","coach":"Verification is being offered again, so these asks resolve.","connect":"The connection was set up, so the skill can run.","finish-setup":"The skill was finished and went live.","install-skill":"The matching skill was installed and now covers this.","missing-skill":"A skill now covers this ask."},"filled-recent":"Resolved","in-window":"in the last 30 days","last-seen":"last seen {time}","reopen":"Reopen","review":"Review {count} conversation | Review {count} conversations","see-breakdown":"See the signal breakdown","set-aside":"Set aside","set-aside-line":"Set aside for good. It will not surface again.","snoozed":"Snoozed","snoozed-line":"Snoozed for 90 days. It comes back if the asks keep coming."},"cta":{"add-live-key":"Add live key","browse-store":"Browse skill store","build-skill":"Build a skill","connect":"Connect","finish-setup":"Finish setup","review-conversations":"Review the conversations","view-in-store":"View in skill store"},"demo":{"because":"the skill store has a skill for this: Reschedule a delivery.","because-source":"created by matching the topic to the skill store catalog","bubble":"Hi, can you move my delivery to Thursday instead?","card-chip":"In skill store","card-topic":"Customers ask to reschedule a delivery","counter":"{count}, 2 handed off to a person","counter-count":"3 conversations this week","cta":"View in skill store","evidence":"{count} in 30 days, 5 handed off to a person.","evidence-count":"14 conversations","honest":"Nothing above is real. It is a sample of what appears once customers start asking.","lead":"Nothing to fix yet. Here is how the first suggestion will find you.","review-link":"Review 14 conversations","sample":"Sample","tile-confirm-body":"When the same ask shows up in three or more threads, it lands here with its fix computed.","tile-confirm-title":"Three asks become a suggestion","tile-sweep-body":"Once a day, repeated asks about the same thing are gathered into one case.","tile-sweep-title":"Stalled asks are grouped daily","tile-watch-body":"It notices when a customer asks for something no skill can finish, and the ask stalls or goes to a person.","tile-watch-title":"Gruvi watches every thread"},"dismiss":{"permanent":"Set aside for good","permanent-hint":"Stops surfacing this cluster.","snooze":"Snooze 90 days","snooze-hint":"Comes back if the asks keep coming.","trigger":"Dismiss"},"early":{"description":"Clusters that have not crossed the confirmation threshold yet, so we are not sure they are real. They stay quiet here until they do, or fade if they stop.","meta":"{count} conversation, last seen {time} | {count} conversations, last seen {time}","promote":"Confirm now","title":"Early signals","watching":"{count} watching | {count} watching","watching-pill":"Watching"},"empty":{"dismissed-body":"Suggestions you snooze or set aside land here, and you can reopen them anytime.","dismissed-title":"Nothing dismissed","filled-body":"Once a suggestion's fix is in place, it moves here on the next daily sweep.","filled-title":"Nothing resolved yet"},"errors":{"dismiss":"Could not dismiss this suggestion. Try again.","promote":"Could not confirm this signal. Try again.","reopen":"Could not reopen this suggestion. Try again."},"evidence":{"handed-off":"{count} handed off to a person | {count} handed off to a person","stalled":"{count} stalled before finishing | {count} stalled before finishing","verification-dropoffs":"verification dropped off in {count} | verification dropped off in {count}"},"home":{"hint-connection-missing":"waiting on a connection","hint-marketplace-match":"a skill store skill matches","hint-missing-skill":"no skill covers it yet","hint-setup-incomplete":"the skill is still a draft","hint-verification-friction":"verification is dropping off","subtitle":"{count} open, top by impact this month | {count} open, top by impact this month","title":"Skill suggestions","view-all":"View all"},"impact":{"factor-handoffs":"{count} was handed off to a person. | {count} were handed off to a person.","factor-stalled":"{count} run stalled before finishing. | {count} runs stalled before finishing.","factor-verification":"Verification dropped off in {count} conversation. | Verification dropped off in {count} conversations.","factor-volume":"{count} conversation in the last 30 days. | {count} conversations in the last 30 days.","heading":"Impact {score}","label":"impact","tier-high":"High","tier-low":"Low","tier-medium":"Medium"},"outcome":{"handed-off":"Handed off","stalled":"Stalled","unresolved":"No resolution","verification-dropoff":"No verification"},"reason":{"connect-connections":"{connection} is not connected yet.","connect-health":"{count} run stopped without it. | {count} runs stopped without it.","connect-readiness":"The skill matched, but could not finish on its own.","heading":"Why this reason","key-connections":"{connection} has no live key added.","key-health":"{count} run stopped before touching live data. | {count} runs stopped before touching live data.","key-readiness":"The skill matched, but could not finish on its own.","marketplace-catalog":"{skill} in the skill store matches this topic.","marketplace-readiness":"No installed skill matches this ask.","missing-catalog":"Nothing in the skill store covers it either.","missing-readiness":"No installed skill matches this ask.","setup-connections":"A required connection is not bound yet.","setup-readiness":"{skill} is installed but still a draft.","this-connection":"a required connection","this-skill":"the matching skill","verification-dropoff":"{count} customer dropped off at the check. | {count} customers dropped off at the check.","verification-primary":"Verification was started but never completed."},"samples":{"heading":"Sample conversations","view":"View conversation"},"source":{"connection-missing":"computed from readiness, connections, and health","marketplace-match":"computed by matching the topic to the skill store catalog","missing-skill":"computed from readiness and the skill store catalog","setup-incomplete":"computed from skill readiness reasons","verification-friction":"computed from thread verification outcomes"},"tabs":{"dismissed":"Dismissed","filled":"Resolved","open":"Open"},"tag":{"catalog":"catalog","connections":"connections","health":"health","readiness":"readiness","verification":"verification"},"title":"Skill suggestions","type":{"connection-missing":"Needs a key","marketplace-match":"In skill store","missing-skill":"No skill","setup-incomplete":"Draft","verification-friction":"Coaching"}},"title":"Skills","try":{"hero-cta":"Rehearse","hero-description":"You play the customer, in a private chat. It takes a minute, and nothing reaches a real customer until you publish.","hero-title":"Rehearse this skill","preview-agent":"Of course. Let me take a look.","preview-customer":"Hi, can you help me with something?","subtitle":"Nothing here reaches a real customer."},"versions":{"actions":"Version actions","badge-draft":"Draft","badge-live":"Live","count":"{count} version | {count} versions","empty":"No versions published yet.","empty-hint":"The first publish becomes version 1.","published":"Published {when}","releases":"Releases","restore":"Restore as draft","restore-caption":"Restoring a version brings it back as a draft you can review and edit. It only goes live once you publish it.","restore-confirm-body":"This copies the version into your working draft. Nothing changes for customers until you publish it.","restore-confirm-title":"Restore version {number}?","restore-failed":"Could not restore this version. Try again.","saved":"Saved {when}","subtitle":"Every published version, newest first.","title":"Version history","version-number":"Version {number}"},"who":{"pair":"{first} and {second}","whole-team":"The whole team"},"wizard":{"complete-hint":"The draft is ready. Try it out in a rehearsal, put it into action, or keep it as a draft.","error-body-resend":"Nothing was lost. Send your answer again.","error-body-retry":"Nothing was lost. Try again and the wizard picks up where it left off.","error-title":"That didn't go through.","footnote":"The wizard drafts the skill. Connecting accounts and going live happen in the editor.","generation-error":"The wizard hit a snag. Send your answer again.","input-placeholder":"Type your answer","message-too-long":"Keep this message to {count} characters or fewer.","intro":"Answer a few questions and the wizard drafts the whole skill: what to collect, what to check, what to look up, and what happens at the end. Nothing goes live until you say so.","intro-title":"Let's teach your team a new skill","preview-title":"The skill so far","preview-toggle":"Preview","send-error":"Your answer didn't send. Try again.","start-error":"The wizard couldn't start. Try again.","thinking":"Thinking it through","title":"Teach a new skill","updated-skill":"Skill draft updated","updating-skill":"Updating the skill draft"}},"sla":{"card":{"foot-rules":"Clockwork","foot-with-persona":"Clockwork, with {name} on call","purpose":"Watches the clock on every thread. Warns before a deadline slips, brings in {name} or a person when it gets close, and never counts time the customer is holding the ball.","purpose-empty":"Set response and resolution targets per priority. Warns before a deadline slips and never counts time the customer is holding the ball.","scope-all":"all threads","title":"Hit response time targets","title-acronym":"Hit your SLA targets"},"channel-type":{"api":"API","chat":"chat","email":"email","slack":"Slack","telegram":"Telegram","whatsapp":"WhatsApp"},"clock":{"chloe-body-off":"A reply from {name} does not satisfy first response on its own. Turn this on per workspace to let a grounded answer count.","chloe-body-on":"A grounded answer from {name} satisfies first response. You can turn this off per workspace if only human replies should count.","chloe-lead-off":"Only human replies count.","chloe-lead-on":"{name} can meet the target.","holidays-body":"Deadlines never land on a day you mark off, so nobody comes back to a wall of false breaches.","holidays-lead":"Holidays count as closed.","pause-body-business":"while you wait on the customer, while a thread is snoozed, and outside business hours. It resumes where it left off.","pause-body-calendar":"while you wait on the customer and while a thread is snoozed. It resumes where it left off.","pause-lead":"The clock pauses","recalc-body":"Raise a thread to urgent and the targets tighten from the original clock start. Downgrade it and they relax, and a breach that only existed under the old priority is cleared, with the change logged on the thread.","recalc-lead":"Priority changes recalculate everything.","subtitle":"The same rules for all three targets. No exceptions per metric, so there is nothing to memorize."},"detail":{"activate":"Activate targets","activate-error":"Could not activate the targets. Please try again.","back":"Back to skills","clock-title":"How the clock behaves","edit":"Edit targets","publish":"Publish","publish-consequence":"Clocks start for new conversations immediately. Nothing is backdated.","publish-error":"Could not publish the response time targets. Please try again.","publish-title":"Publish response time targets?","rail-title":"As time runs out","targets-title":"The targets"},"drawer":{"cell":{"hours":"Hours","priority":"Priority","target":"Target"},"close":"Close timeline","due-in":"{time} to {metric}","history-title":"History","history":{"applied":"Targets applied","breach":"{metric} breached","due-moved":"{metric} due moved {from} to {to}","met":"{metric} met","migrated":"Policy updated","migrated-note":"Deadlines re-pinned to the new version. Alerts already sent still stand, so nothing fires twice.","priority-changed":"{name} set priority to {priority}","priority-changed-system":"Priority set to {priority}","priority-cleared":"{name} cleared the priority","priority-cleared-system":"Priority cleared","recalculated":"Targets recalculated","rung":"Escalation step {step} ran","un-breached":"The {metric} breach that only existed under the old targets is cleared. The record of it stays on the thread.","warn":"{metric} warning fired"},"hours-mode":{"business":"business hours","calendar":"calendar hours"},"no-active-clock":"No clock is running right now","overdue":"Overdue {time}","paused-line":"Clock paused, {reason}","priority-context":"{priority} priority","resumes":"resumes {time}","title":"Response time"},"duration":{"days":"{value}d","hours":"{value}h","minutes":"{value}m"},"edit":{"action-kind":{"apply-sla":"Apply other targets","assign":"Move the thread","hand-to-agent":"Hand to {name}","notify":"Notify someone","set-priority":"Change priority"},"action-to":"to","add-action":"Add an action","add-holiday":"Add a holiday","add-interval":"Add hours","add-rung":"Add a step","assign-to":{"team-pool":"to a team","team-round-robin":"to a team, round-robin","user":"to a person"},"back":"Back to targets","calendar-name-label":"Calendar name","day-closed":"Closed","grounded-error":"Could not change the setting. Please try again.","grounded-hint":"Turn this off if only a human reply should stop the first-response clock.","grounded-label":"A grounded answer from {name} satisfies first response","group-people":"People","group-teams":"Teams","holiday-name-placeholder":"Holiday name","holidays-desc":"Days marked off count as closed, so a deadline never lands on one.","holidays-label":"Holidays","hours-business":"Business hours","hours-business-desc":"Count only scheduled hours, skipping nights, weekends, and holidays.","hours-business-locked":"Business hours are set when the policy is created.","hours-calendar":"Around the clock","hours-calendar-desc":"Count calendar time, day and night, every day.","hours-subtitle":"Business hours count only scheduled time. Calendar time counts around the clock.","hours-title":"How time is counted","interval-to":"to","ladder-guard":"Pick a person, team, or policy for every step before publishing.","ladder-subtitle":"Add steps that fire once a target is missed. Each one runs at or after breach.","move-agent":"{name} (AI)","move-mode":{"pool":"anyone available","round-robin":"round robin"},"name-label":"Name","no-holidays":"No holidays yet.","notify-duplicate":"Two rows notify the same recipient, so one of them can go.","notify-to":{"assignee":"the assignee","team":"a team","user":"a person","workspace-owners":"workspace owners"},"offset-at-breach":"at breach","offset-prefix":"Fires","offset-suffix":"after breach","owner-conflict":"This step names two next owners. Keep one: assign the thread to a person or a team, or hand it to {name}.","pick-person":"Pick a person","pick-policy":"Pick a policy","pick-team":"Pick a team","preview-empty":"Set a target to see the timeline.","preview-title":"Live preview","publish":"Publish changes","publish-activate":"Publish and activate","publish-consequence":"Changes apply to new countdowns right away. Running threads recalculate, and a breach that no longer holds is cleared.","publish-draft":"Publish","publish-error":"Could not publish the changes. Please try again.","publish-title":"Publish these changes?","remove-action":"Remove action","remove-holiday":"Remove holiday","remove-interval":"Remove hours","remove-rung":"Remove step","schedule-label":"Weekly schedule","target-clear":"Clear this target","target-set":"Set","targets-guard":"Set at least one target before publishing.","timezone-label":"Timezone","unit-short":{"days":"days","hours":"hr","minutes":"min"},"unit":{"days":"days","hours":"hours","minutes":"minutes"},"verb-desc":{"apply-sla":"Switch this thread to another set of targets","move":"A step names one next owner: a person, a team, or {name}","notify":"Alert a person, a team, or the owners","set-priority":"Raise or lower the thread priority"},"verb-used":"Already in this step","verb":{"apply-sla":"Apply other targets","move":"Assign the thread","notify":"Notify","set-priority":"Change priority"},"warn-lead-prefix":"Warn","warn-lead-suffix":"before it is due","warn-none":"No warning","warn-subtitle":"Get a heads-up before a target is due, per response type.","warn-title":"Warnings","warn-toggle":"Warn before due"},"empty":{"body":"Set response and resolution targets per priority, warn before a deadline slips, and never count time the customer is holding the ball.","cta":"Set up targets","title":"No response targets yet"},"hours":{"all-day":"all day","day-range":"{first} to {last}","interval":"{from} to {to}"},"inbox":{"card":{"left":"{time} left","overdue":"{time} overdue","paused":{"generic":"Clock paused","snoozed":"Snoozed","waiting-on-customer":"Waiting on customer"}},"filter":{"due-soon":"Due soon","label":"Response time","none":"No targets","on-track":"On track","overdue":"Overdue","paused":"Paused"},"sort":{"aria":"Sort threads, currently {sort}","latest-activity":"Latest activity","latest-activity-hint":"Newest message first.","next-sla-deadline":"Next SLA deadline","next-sla-deadline-hint":"Closest deadline first.","smart":"Smart sorting","smart-hint":"Threads that need you first."}},"ladder":{"after-breach":"After the breach","before-deadline":"Before the deadline","before-due":"before due","breach-desc":"The promised time has passed. The steps below begin, each counted from this moment.","breach-title":"Deadline breached","chip-after":"+{value} {unit}","chip-at-breach":"At breach","foot":"{name} can be brought in at any step, alongside a person or on their own. Each step fires once per cycle, so a thread that breaches, recovers, and breaches again on a new cycle starts fresh.","warn-desc":"A quiet heads-up before each promised time runs out, so a person can step in first.","warn-no-deadline":"No target set, so there is nothing to warn about","warn-title":"Deadline approaching"},"matrix":{"business-days":"business days","clear-note":"Low priority carries no target on purpose. A thread downgraded to low stops counting instead of sitting there falsely overdue. Clearing any cell to no target does the same thing: that promise simply stops being measured.","clear-note-covered":"Clear any cell to no target and that promise simply stops being measured for those threads.","foot":"{priorities} carry no targets, so a downgraded thread stops counting instead of sitting there falsely overdue.","foot-priority":"{priority} priority threads","metric-hint":{"first-response":"Time to the first real reply, from a person or grounded AI.","next-response":"Re-arms each time the customer writes back.","resolution":"Time to resolved or closed, whichever comes first."},"metric":{"first-response":"First response","next-response":"Every next response","resolution":"Resolution"},"no-target":"No target","priority":{"high":"High","low":"Low","normal":"Normal","urgent":"Urgent"},"set-target":"Set target"},"meta":{"applies":"Applies to {scope} threads","brand":"Clockwork","hours-business":"Counts {calendar}, {summary}, {timezone}","hours-calendar":"Counts calendar time, around the clock","persona-rules":"{brand}, rules only","persona-with":"{brand}, with {name} stepping in near the deadline","scope-all":"all"},"new":{"back":"Back to targets","create":"Create draft","create-error":"Could not create the policy. Please try again.","crumb":"Response time targets","deadline":{"ladder-note":"Built in already: the assignee is nudged at the warning, and workspace owners are notified once at breach. Leaving the steps empty is fine. Add steps only when you want more to happen.","ladder-title":"As time runs out","subtitle":"Warn before a target is due, then add steps that fire once it is missed.","title":"Near and after the deadline"},"default-name":"Response time targets","hours":{"calendar-default-name":"Business hours","create-desc":"Set the weekly hours and holidays for this policy.","create-option":"Create a new schedule","default-tag":"Default","name-label":"Calendar name","reuse-desc":"Reuse your existing schedule. You can fine-tune it later on the edit page.","reuse-label":"Schedule","reuse-option":"Keep {name}","title":"How should time be counted?","workspace-follow-note":"Follows the workspace default as it changes.","workspace-option":"Workspace business hours"},"name":{"subtitle":"Give this policy a name you'll recognize. You can change it later.","title":"Name this policy"},"publish":"Publish","publish-consequence":"Clocks start for new conversations immediately. Nothing is backdated.","publish-error":"Could not publish the response time targets. Please try again.","publish-title":"Publish response time targets?","step-count":"Step {current} of {total}","step":{"deadline":"As time runs out","hours":"Business hours","name":"Name","scope":"Who this covers","targets":"The targets","threads":"Which threads","time-low":"When time runs low"},"targets":{"intro":"These are sensible starting points. Adjust any target, or clear one to stop counting it.","title":"Set your targets"},"threads":{"scope-all-desc":"Every thread gets these targets.","scope-all-title":"All threads","scope-channels-desc":"Only threads from the channel types you pick.","scope-channels-hint":"Pick at least one channel type.","scope-channels-title":"Specific channels","scope-label":"Applies to","subtitle":"Name the policy and choose the threads it applies to. You can change this later.","title":"Which threads does this watch?"},"title":"Set up response time targets"},"pill":{"aria":"Response time: {state}. Opens the timeline.","overdue":"Overdue {time}","paused":"paused","remaining":"{time} remaining"},"policies":{"add-subtitle":"Adds to the order above the default","add-title":"New policy","applied-policy":"Policy: {name}","consequence":"A new order applies to conversations that start after the change. Running conversations keep the policy they already have.","count-one":"{count} policy, plus the default","count-other":"{count} policies, plus the default","default-badge":"Default","default-catchall":"Covers every conversation the policies above do not. It cannot be reordered or deleted.","duplicate":"Same scope as {name}. First match wins from the top, so this policy never applies while it sits lower. Give it a narrower scope, or move it above.","move-down":"Move down","move-up":"Move up","new":"New policy","overview":{"summary":"Response promises applied by policy. {count} policies, {active} active and {draft} draft. Default: {name}."},"reorder-error":"Could not save the new order. It may have changed elsewhere, so we refreshed the list. Please try again.","scope":{"channel":"Channel","channel-one":"{count} channel","channel-other":"{count} channels","channel-type":"Channel type","company":"Company","company-one":"{count} company","company-other":"{count} companies","label":"Labels","label-one":"{count} label","label-other":"{count} labels","more-names":"{names} +{count}","more-one":"{count} more condition","more-other":"{count} more conditions","not-names":"not {names}","priority":"Priority"},"subtitle":"A conversation falls through these policies from the top. The first one whose scope matches sets its targets, then stops. The default at the bottom catches everything else.","targets":{"draft-note":"Not counting yet, this policy is a draft","first":"First","next":"Next","range":"{min} to {max}","resolve":"Resolve"},"title":"Response time targets","trace":{"clear":"Clear","lead":"See where a conversation lands","matches":"Matches here"}},"rail":{"action":{"apply-sla":"the {name} targets apply","assign-team":"the thread moves to the {name} team","assign-team-pool":"the thread moves to the {name} team","assign-team-round-robin":"the thread moves to the {name} team, round-robin to whoever is online","assign-user":"the thread moves to {name}","hand-to-agent":"{name} takes the thread","notify-assignee":"the assignee is notified","notify-team":"the {name} team is notified","notify-user":"{name} is notified","notify-workspace-owners":"the workspace owner is notified","set-priority":"the priority is set to {priority}"},"deadline-desc":"If {metric} is out, the target is met and the ring closes green. If not, the thread is overdue and the ladder below starts.","deadline-desc-no-ladder":"If {metric} is out, the target is met and the ring closes green. If not, the thread is overdue.","deadline-title":"The deadline","duration-business":"{value} business {unit}","duration-calendar":"{value} {unit}","metric":{"first-response":"first response","next-response":"the next response","resolution":"resolution"},"ordinal":{"1":"First","2":"Second","3":"Third","4":"Fourth","5":"Fifth","6":"Sixth","7":"Seventh","8":"Eighth","9":"Ninth","10":"Tenth"},"priority":{"high":"high","low":"low","normal":"normal","urgent":"urgent"},"ref":{"removed-policy":"another policy","removed-team":"a removed team","removed-user":"a removed teammate"},"reply-phrase":{"first-response":"the first response","next-response":"the next response","resolution":"the resolution"},"rung-title":"{ordinal} step","start-desc":"On {priority} threads, {metric} gets {duration}. The countdown appears on the thread right away.","start-title":"The clock starts","subtitle":"What happens around each deadline. Shown here for {metric} on {priority} threads.","unit":{"days":"day | days","hours":"hour | hours","minutes":"minute | minutes"},"warn-desc":"The assignee gets a nudge.","warn-desc-grounded":"The assignee gets a nudge. A real answer from {name} counts as the first response. A canned acknowledgment does not.","warn-title":"Warning","when":{"after-breach":"{offset} after breach","at-breach":"at breach","at-target":"at {target}","before-due":"{lead} before due","customer-writes":"customer writes"}},"ring":{"aria":{"due":"{metric} due in {time}","overdue":"{metric} overdue by {time}","paused":"Response time clock paused, {reason}"},"metric":{"first-response":"First response","next-response":"Next response","resolution":"Resolution"},"paused":{"outside-business-hours":"outside business hours","snoozed":"snoozed","waiting-on-customer":"waiting on the customer"}},"scope":{"add-company":"Add company","add-condition":"Add condition","add-customer":"Add customer","channel-count":"{count} channel | {count} channels","company-fallback":"Selected company","customer-fallback":"Selected customer","connector":{"chat":"Live chat","email":"Email","telegram":"Telegram","whatsapp":"WhatsApp"},"default-body":"It covers every conversation the policies above do not, so there is nothing to scope here.","default-desc":"The default policy has no scope to edit.","default-locked":"Scope locked","default-title":"This is the default policy","edit-subtitle":"The conversations this policy covers. The first policy whose scope matches sets its targets.","empty":{"chat":"No live chat channels connected yet","email":"No email inboxes connected yet","telegram":"No Telegram channels connected yet","whatsapp":"No WhatsApp numbers connected yet"},"field":{"channel":"Channel","channel-type":"Channel type","customer":"Customer","customer-company":"Company","labels":"Labels","thread-priority":"Priority"},"hint-all":"Every condition must be true","hint-any":"At least one condition must be true","match-all":"Match all of these","match-any":"Match any of these","no-conditions":"Add a condition to choose which conversations this policy covers.","pick-channel":"Channels","pick-field":"Field","pick-label":"Labels","pick-operator":"Operator","pick-priority":"Priorities","pick-value":"Value","readonly-note":"These conditions load read-only. More condition types can be edited here later.","remove-condition":"Remove condition","remove-value":"Remove","selected-of":"{selected} of {total} selected","title":"Who this covers","toggle-all":"All","toggle-any":"Any","wizard-subtitle":"Choose which conversations this policy covers. The first policy whose scope matches sets the targets, so order matters."},"targets":{"subtitle-business":"Per priority, in business hours. Every countdown in the app shows business time, the same way it is counted.","subtitle-calendar":"Per priority, in calendar time. Every countdown in the app counts around the clock."}},"slash-menu":{"footer-hint":"# for canned replies","or-type-instruction":"or type an instruction..."},"sovereign":{"chip":{"ai-reply":"This was never sent to the AI. Gruvi filled it in after the AI wrote the reply.","customer-message":"This was never sent to the AI. It stays between you and your customer.","name":"Sovereign"}},"thread":{"actions":{"close-failed":"Your reply was sent, but closing the thread failed. Try closing it again.","reopen":"Reopen","restore-error":{"conflict":"Someone else changed this thread while you were undoing. Refreshing so you can see where it is now.","failed":"Couldn't restore this thread. Try again in a moment.","forbidden":"You don't have permission to change this thread's status.","not-found":"This thread is no longer available.","offline":"Couldn't reach Gruvi. Try again once you're back online."},"send-and-close":"Send and close","send-and-resolve":"Send & Resolve","send-options":"Send options","sent-closed":"Sent, thread closed","sent-resolved":"Sent, thread resolved","set-closed":"Close","set-pending":"Set to Pending","set-resolved":"Resolve","undo":"Undo"},"ai-agent":"AI Agent","ai-message-actions":{"adjust":"Adjust the reply","adjust-hint":"Fix what it said. The fix is saved as a guided answer.","coach":"Coach this reply","coach-error":"Couldn't start the rehearsal. Try again.","coach-hint":"Rehearse this reply in Training and teach a fix","coach-no-customer-message":"There's no customer message before this reply to rehearse.","thumbs-down":"Needs work","thumbs-up":"Good reply"},"ai-panel":"AI assistant","assign-to":"Assign to","assignment":{"back-to-team":"Back to {name}","close-team":"Close {name}","empty":"Nobody to assign yet.","hint-assign":"assign","hint-move":"move","hint-open-team":"open a team","no-results":"Nothing matches that search.","open-team":"Open {name}","people":"People","recent":"Recent","search-placeholder":"Search teams and people","teams":"Teams","unclaimed":"Unclaimed","you":"You"},"attach":"Attach file","attach-pick-channel":"Pick a channel to attach files","attachment-preview":"📎 Attachment","back":"Back","canned-replies":"Canned replies","canned-reply-hint":"⌘K for all actions","canned-reply-no-results":"No canned replies found","coach-dock":{"adjust-title":"Adjust the reply","close-continue":"Close and continue","details":"Details","error-description":"Nothing changed. Try saving it again.","error-title":"The answer did not save","draft-eyebrow":"{name} drafted this","draft-fix":"Draft the fix","draft-reclassify-to-article":"Make this an article fix instead","draft-reclassify-to-rule":"Make this a rule instead","draft-rule-lead-never":"{name} will never","draft-rule-lead-prefer":"{name} will prefer to","draft-rule-meta-hard":"A hard rule. {name} follows it in every conversation.","draft-rule-meta-soft":"A preference. {name} leans this way when it fits.","footer-rewrite":"Rewrite the correction","footer-test-question":"Test it on {name}'s question","footer-test-question-noname":"Test your fix","kept-article-line":"Live for every channel from now on.","kept-coach-again":"Coach another reply from any reply's menu.","kept-payoff-rule":"Now {count} of {cap} do's and don'ts are active on {name}.","kept-rule-line":"Live for customers from now on. Applies to {name}, every channel.","live-receipt-label":"From the live reply","make-it-live":"Make it live","open-coach-mode":"Open Coach mode","phase":{"reading":"Reading the conversation","retrieving":"Searching your knowledge","verifying":"Checking the claims","writing":"Writing the reply"},"prove-before-label":"Before your coaching","prove-eyebrow":"Testing on {name}'s question","prove-eyebrow-noname":"Testing your fix","prove-with-article":"With this change, {name} says:","receipt-missing-error":"This reply's receipt is missing, so it can't be coached.","send-to-suggestions":"Send to Suggestions","starter":{"fact-correction-contract":"The reply didn't follow its required format. Keep replies within the format the channel expects.","fact-correction-contradicted":"The claim \"{claim}\" contradicts {source}. Only say what {source} supports.","fact-correction-contradicted-nosource":"The claim \"{claim}\" contradicts your knowledge. Only say what your knowledge supports.","fact-correction-unsupported":"\"{claim}\" isn't backed by your knowledge. Don't say it unless {source} supports it.","fact-correction-unsupported-nosource":"\"{claim}\" isn't backed by your knowledge. Don't say it unless your knowledge supports it.","fact-label":"Fix the unbacked claim","fact-label-source":"Answer from {source}","process-correction":"You didn't follow this rule: \"{rule}\". Apply it in replies like this.","search-knowledge-correction":"Check the knowledge base before answering questions like this.","search-knowledge-label":"Search knowledge before answering"},"subtitle":"Reply from this conversation","teach-label":"What should this reply have done differently?","teach-privacy-note":"Your coaching stays private until you make it live.","test-in-training":"Test it in Training mode","title":"Coach {name}","tracing-note":"{name} is working through this reply. The trace lands here as it goes.","verdict-checking":"Checking this answer...","verdict":{"all-backed":"Every claim is backed","clean-title":"This reply holds up","clean-unchecked-title":"Answered from your knowledge","flagged-title":"The {claim} claim isn't in your knowledge","gap-title":"{name} answered without checking your knowledge","not-checked":"Not fact-checked","unsupported-count":"{count} unsupported claim | {count} unsupported claims"},"with-this-rule":"With this rule, {name} says:"},"composer-closed":"This thread is closed","composer-mode-note":"Note","composer-mode-reply":"Reply","composer-note-hint":"Only visible to your team","composer-note-placeholder":"Add a team note... ({'@'} to mention)","composer-placeholder":"Reply to customer... (/ for {agent}, # for replies and shortcuts)","composer-preference-enter-newline":"Enter adds new line","composer-preference-enter-sends":"Enter sends message","composer-private-note":"Private note","composer-resolved-hint":"Sending a message will reopen this thread","composer-whatsapp-add-note":"Add an internal note","composer-whatsapp-template":{"back":"All templates","category":{"authentication":"Authentication","marketing":"Marketing","utility":"Utility"},"empty":"No approved templates yet. Author utility templates in WhatsApp Manager, then pick them here once Meta approves them.","error":"Templates could not be loaded.","hint":"Re-engage this customer with a pre-approved template. Replies open again when they respond.","manage":"Open WhatsApp Manager","reconnect":"WhatsApp signed this number out. Reconnect it to send templates.","reconnect-action":"Open WhatsApp settings","retry":"Try again","send":"Send template","sending":"Sending","variable-label":"Variable {number}"},"composer-whatsapp-window-closed":"The 24-hour WhatsApp reply window has closed.","composer-whatsapp-window-pill":"WhatsApp replies close in {minutes} min","details":{"close":"Close thread details","customer":{"average-rating":"{rating} avg rating","claim":{"chat-session":"This chat session","held-back":"Held back until proven","held-item-account":"Orders, address, and plan","held-item-actions":"Any action that writes","held-item-knowledge":"Answers from the knowledge base","held-item-threads":"Earlier threads and what was said in them","matched-threads":"{count} thread | {count} threads","not-proven":"Not proven yet","typed":"Typed {email}","visitor":"Anonymous visitor"},"title":"Customer","total-threads":"{count} thread | {count} threads","unavailable":{"description":"This customer record was deleted. The thread is kept for reference.","title":"Customer unavailable"},"view-profile":"View full profile"},"people":{"raised-it":"raised it","title":"People"},"labels":{"title":"Labels"},"overview":{"assignee":"Assignee","channel":"Channel","created":"Created","last-activity":"Last activity","priority":"Priority","snoozed-until":"Snoozed until","status":"Status","thread-id":"Thread ID","title":"Overview"},"properties":{"empty":"No thread properties yet. Create properties to track structured data on every thread.","manage":"Manage thread properties","title":"Thread properties"},"title":"Thread details"},"email":{"add-cc":"Add CC","bcc-label":"Bcc","cc-invalid":"That doesn't look like a valid email","cc-label":"Cc","cc-placeholder-empty":"Add another recipient","cc-placeholder-more":"Add another","composer":{"add-external":"Send to this address","bcc-placeholder-empty":"Add a hidden recipient","cc-placeholder-empty":"Add a recipient","cc-placeholder-more":"Add another","no-recipient":"no recipient on file","no-team-match":"Type a full email to add an external recipient"},"header":{"bcc":"bcc","cc":"cc","external":"external","subject":"subject","to":"to"},"hide-details":"Hide details","hide-quoted":"Hide quoted","hide-signature":"Hide signature","show-details":"Show details","show-quoted":"Show quoted","show-signature":"Show signature","subject-label":"Subject","subject-placeholder":"Subject","suppression":{"description":"This recipient unsubscribed or bounced. To send anyway, record why this message must reach them.","reason-label":"Justification for the audit log","reason-placeholder":"Explain why we are sending despite the suppression","reason-required":"A justification is required to override","send-anyway":"Send anyway","suppressed":"Suppressed {time} ago","title":"This recipient has unsubscribed"}},"emoji":"Emoji","escalation":{"ai-cannot-help":"The assistant could not handle this and asked for a teammate.","banner":"{name} escalated this conversation and needs a human.","custom-keyword":"Matched a custom keyword","handed-off":"Handed off to a human","handoff-tooltip":"This thread was handed over from AI for a human agent's attention","knowledge-system-unavailable":"A temporary system issue kept the AI from checking the knowledge base. Please reply to the customer directly.","no-grounding-evidence":"No knowledge source covers this request. Reply directly, or add this topic to the knowledge base so it can be answered next time.","rule":"Matched your escalation rule: {rule}","tripwire":"Mentioned \"{phrase}\"","verification-flagged":"The drafted reply did not pass accuracy checks, so it was not sent. Please reply directly.","verification-unavailable":"The drafted reply could not be checked for accuracy, so it was not sent. Please reply directly."},"events":{"assigned-system":"This thread was assigned","assigned-to-team":"{name} assigned this to {team}","assigned-to-user":"{name} assigned this to {target}","assigned-to-user-and-team":"{name} assigned this to {target} in {team}","handed-off":"{name} handed this thread to {target} while out of office","handed-off-system":"Handed to {target} while out of office","handed-off-unnamed":"{name} handed this thread to a teammate while out of office","handed-off-system-unnamed":"Handed to a teammate while out of office","closed":"{name} closed this thread","closed-system":"This thread was automatically closed","group-member-joined":"{name} joined","group-member-left":"{name} left the group","group-photo-updated":"Group photo updated","group-renamed":"Group renamed to {title}","reopened":"{name} reopened this thread","reopened-by-reply":"Reopened by {name}'s reply","reopened-system":"This thread was reopened","resolved":"{name} marked this thread as resolved","resolved-system":"This thread was marked as resolved","self-assigned":"{name} self-assigned this thread","self-assigned-with-team":"{name} self-assigned this thread in {team}","skill-run-activated":"{skill} started","skill-run-approved-by":"approved by {name}","skill-run-approver":"Approved by {name}","skill-run-no-approver":"Ran without approval","skill-run-resolved":"{skill} finished","skill-run-view":"View run","snoozed":"{name} snoozed this thread","snoozed-system":"Thread was snoozed","spam-marked":"{name} marked this thread as spam","spam-restored":"{name} restored this thread from spam","tracker-linked":"Added to tracker","tracker-member-linked":"A thread was added","tracker-member-unlinked":"A thread was removed","tracker-unlinked":"Removed from tracker","participant-added":"{name} added {target}","participant-added-system":"{target} was added","unassigned":"{name} unassigned this thread","unassigned-system":"This thread was unassigned","unsnoozed":"{name} unsnoozed this thread","unsnoozed-system":"Snooze expired"},"former-team-member":"Former team member","handoff":{"channel-email":"Email","channel-live-chat":"Live chat","detail":{"away-body":"{name} isn't watching the chat right now.","away-seen-title":"Away, last seen {time}","away-title":"Away","email-backup-title":"We'll email it too","email-backup-body":"If this stays unread in the chat, we'll email it in a few minutes.","email-blocked-body":"This customer's email is blocked, so nothing can be sent there.","email-blocked-title":"Email blocked","moved-email-body":"Replies go to the address on the chip, not the chat.","moved-email-title":"This conversation moved to email","no-email-body":"We can't send this on by email, so {name} sees it next time they open the chat.","no-email-title":"No email on file","open":"Delivery details","route-body":"They left the chat and picked {channel} for follow-up.","route-title":"Customer chose {channel}","sends-email-body":"It goes to the address on the chip.","sends-email-title":"This sends as an email","switch":"Send this reply another way"},"email-blocked":"Email blocked","presence":{"away":"Away","recent":"Recently here"},"follow-up":{"channel":{"email":"email","telegram":"Telegram","whatsapp":"WhatsApp"},"unavailable":{"telegram":"Telegram is no longer available","whatsapp":"WhatsApp is no longer available"}},"no-email":"No email on file","recipient-locked":"Locked once the email thread starts","send-via":"Send this reply via"},"hash-menu-hint":"⌘K for all actions","hash-menu-no-results":"No canned replies found","header":{"customer-thread-count":"{count} thread | {count} threads","people-more":"{name} and {count} other | {name} and {count} others","people-two":"{first} and {second}","rename-hint":"Double-click to rename","rename-hint-click":"Click to rename","thread-count":"{count} thread | {count} threads total","title-placeholder":"Thread title","unverified":"Unverified","unverified-tooltip":"This person is writing from chat and typed {email}. They haven't proven they can open that inbox, so the AI is answering without their account."},"insight":{"generating":"Analyzing thread..."},"instruction-placeholder":"Type an instruction for {name}...","labels":{"add-label":"Add label","back":"Back","clear":"Clear","colors":{"dark-grey":"Dark Grey","green":"Green","grey":"Grey","orange":"Orange","pink":"Pink","purple":"Purple","red":"Red","teal":"Teal","yellow":"Yellow"},"create-label-prefix":"Create new label:","custom-color":"Custom color","empty":"No labels","empty-create-hint":"No labels yet. Type a name to create one.","other":"Other labels","overflow":"+{count} more","pick-color-placeholder":"Pick a color for label","search":"Add labels...","title":"Labels","use-this-color":"Use this color"},"language-badge":{"tooltip":"Customer language: {name}"},"mention-no-results":"No members found","message-actions":{"react":"React {emoji}","remove-reaction":"Remove reaction","reply":"Reply"},"message":{"also-cc-d":"Also CC'd","cc-customer-no-resend":"Customer (no resend)","cc-external-not-in-thread":"External, not in thread","cc-observer":"Observer","emailed":"Emailed","emailed-to-tooltip":"Emailed to {email}","via-email":"via email","via-email-tooltip":"This message was sent by replying to a notification email."},"microphone-denied":"Microphone access was denied. Please allow microphone access in your browser settings.","more-actions":"More actions","note-visibility-hint":"Only visible to your team","overflow":{"block-customer":"Block Customer","close":"Close thread","mark-as-spam":"Mark as Spam","not-spam":"Not Spam","reopen":"Reopen","send-and-resolve":"Send & Resolve"},"participants":{"add":"Add a participant","add-failed":"Could not add that person. Try again.","everyone-here":"Everyone is already on this thread.","owner":"Owner","remove":"Remove","remove-failed":"Could not remove that person. Try again.","source":{"added":"Added","added-by":"Added by {name}","assigned":"Assigned","email-cc":"On the email","mention":"Mentioned","note":"Left a note","reply":"Replied","tracker":"From a tracker"},"title":"Participants"},"priority":{"foot":"Threads without a priority count against Normal targets.","label":"Priority","no-target":"no first-reply target","none":"No priority","target":{"days":"first reply {value} days","hours":"first reply {value} hr","minutes":"first reply {value} min"}},"recipient":{"heading":"Send to"},"search-members":"Search members...","send":"Send","send-preferences":"Send preferences","slash-commands":"Commands","snooze":{"banner":"Snoozed until {date}","custom":"Custom","later-today":"Later today","monday":"Monday","one-month":"One month","one-week":"One week","search-placeholder":"Try: 1 minute, 1 hour, 1 day, 1 week","select-date":"Select a date","title":"Snooze thread","tomorrow":"Tomorrow","unsnooze":"Unsnooze"},"status-title":"Status","status":{"closed":"Closed","open":"Open","pending":"Pending","resolved":"Resolved","snoozed":"Snoozed","spam":"Spam"},"telegram":{"open-map":"Open map","replying-to":"Replying to message","request-contact":"Request contact","request-location":"Request location","request-sent":"Request sent","shared-contact":"Shared contact","shared-location":"Shared location"},"time-in-status":"{status} for {duration}","tooltip":{"created":"Created {date}","last-activity":"Last activity {time}"},"transcription-failed":"Failed to transcribe audio. Please try again.","unassign":"Unassign","unassigned":"Unassigned","undo-send":{"preference":"Undo send","preference-off":"Off, so sends leave immediately","preference-on":"Hold sends for {seconds} seconds","recall":"Take this message back","send-now":"Send now"},"voice-message":"Voice message"},"time":{"compact":{"d":"d","days":"d","h":"h","hours":"h","m":"m","minutes":"m","now":"now","s":"s","seconds":"s","weeks":"w"}},"training":{"widget-load-failed":"The test chat did not load.","widget-load-retry":"Try again","characters-used":"{count} of {max}","adjust":{"after":"After","answer-label":"Answer","answer-placeholder":"The answer you want {name} to give","before":"Before","cancel":"Cancel","conflict-open-answer":"Open guided answer","conflict-open-article":"Open article","conflict-open-guidance":"Open do's and don'ts","done":"Done","empty-hint":"Ask {name} something, then select a reply to adjust it. Fixes land in Guided answers.","mode-adaptive":"In its own words","mode-adaptive-caption":"It will keep these facts but phrase it naturally.","mode-exact":"Say it exactly like this","mode-exact-caption":"It will use these words, translated if needed.","open":"Adjust the reply","open-skill":"Open skill","question-caption":"When customers ask this…","question-label":"Question","question-placeholder":"What the customer asked","reply-caption":"{name}'s reply","rewind-note":"The chat rewound to this reply. 1 later turn was removed. | The chat rewound to this reply. {count} later turns were removed.","rewind-warning":"Saving rewinds the chat to this reply. 1 later turn will be removed. | Saving rewinds the chat to this reply. {count} later turns will be removed.","save":"Save and test","save-error":"Could not save that answer. Try again.","saved":"Saved. {name} will answer this way from now on.","skill-note":"This reply came from a skill. Skills are edited in the skill editor.","testing":"Asking {name} the same question","title":"Adjust the reply","view-in-guided-answers":"View in Guided answers"},"answers":{"add-title":"Add a guided answer","answer-placeholder":"What {name} should say","cap-error":"You have reached the limit of {cap} guided answers. Remove one before adding another.","conflict-chip":"Check this","conflict-title":"Worth a look","count":"{count} answer | {count} answers","dialog-description":"What {name} should say when customers ask this.","duplicate-blocked-notice":"A similar answer already exists: {question}. This draft is not live.","duplicate-keep-both":"Keep both","duplicate-notice":"Saved. A similar answer already exists: {question}","duplicate-replace":"Replace existing","edit":"Edit answer","edit-title":"Edit guided answer","empty-description":"Ask {name} something in Training mode, then adjust the reply. The question and your answer land here.","empty-title":"No guided answers yet","no-matches":"No guided answer matches that.","placeholder":"The Guided answers board arrives in the next build.","question-placeholder":"What customers ask","remove":"Remove answer","remove-confirm-description":"{name} stops answering this way from now on.","remove-confirm-title":"Remove this guided answer?","remove-error":"Could not remove that answer. Try again.","rule-priority":"Don't rules take priority when answers conflict.","search-placeholder":"Search guided answers","subtitle":"Created when you fix replies in Training mode, or added by hand.","title":"Guided answers"},"coach":{"ask-again":"Ask again and compare","blocked-article-changed":"The article changed since this fix was drafted. Teach it again from a fresh reply.","blocked-conflict":"This conflicts with an existing rule: {rule}. Edit it or discard.","blocked-duplicate":"This overlaps an existing rule: {rule}. Edit it or discard.","cancel":"Cancel","coach-title":"Coach {name}","correction-hint":"Say it like you would coach a teammate.","correction-placeholder":"For broken items, offer a replacement before a refund, and ask for the order number first.","discard":"Discard","draft-error":"Could not draft that right now. Try again.","drafted-article-title":"{name} drafted an article fix","drafted-rule-title":"{name} drafted a new rule","edit":"Edit","held-up-note":"It held up. Keep it to make it live for customers, or discard it.","keep-it":"Keep it · goes live","kept-article-title":"Knowledge change published","kept-live-note":"Live for customers from now on.","kept-rule-title":"Added to Do's & don'ts","looks-right":"Looks right","marked-good":"Saved as a good example. Nothing else to do.","needs-work":"Needs work","nothing-live-note":"{name} drafts a do, a don't, or an article fix from this. Nothing goes live until you keep it.","publish-knowledge-change":"Publish knowledge change","publishing-disabled":"Publishing is switched off, this rule is saved as a draft.","question":"Was this reply right?","routed-note":"Publishing needs a permission you do not have. A teammate can approve it from the Suggestions tab.","routed-title":"Sent to Suggestions","sandbox-only-note":"Trying it in this sandbox only, for now. Ask again to see it work.","save-changes":"Save changes","scope-article":"Updates {title} for the whole workspace.","scope-rule":"Applies to {name}, every channel.","see-in-rules":"See it in Do's & don'ts","teach":"Teach {name}","turn-into-article":"Not a rule? Turn it into an article fix instead","turn-into-rule":"Not an article fix? Turn it into a rule instead"},"fixtures":{"new-customer":"New customer","new-customer-description":"First contact. No history yet.","refund-ineligible":"Refund ineligible","returning-customer":"Returning customer","returning-customer-description":"Has past conversations with your team.","subscriber-recent-order":"Subscriber with a recent order","verified-customer":"Verified customer","verified-customer-description":"Signed in and verified. Comes with sample account data."},"import":{"accept":"Accept answer","add-from":"Add more from","coming-soon":"Coming soon","csv":"CSV","csv-capped":"Only the first {limit} rows were imported.","csv-empty":"No question and answer rows found in that file.","dismiss":"Dismiss","empty-description":"Bring in answers from a CSV and {name} treats them as knowledge once you approve them.","empty-title":"Nothing imported yet","gmail":"Gmail","help-center":"Help center","needs-review":"Needs review","subtitle":"Review each one like a live answer before {name} can use it.","title":"Answers to review","zendesk":"Zendesk"},"learn":{"accept":"Accept","because":{"content":"A wrong or missing fact slipped in.","escalation":"A handoff was missed or mishandled.","process":"A step was handled the wrong way.","tone":"The tone slipped in real conversations."},"dismiss":"Dismiss","drafted-lesson":"Drafted lesson","empty-description":"New lessons appear here when real conversations show a pattern worth teaching.","empty-title":"Nothing waiting","review":"Review","subtitle":"From thumbs-down feedback and gaps {name} hit recently. Nothing changes until you accept it.","title":"Drawn from real conversations"},"lessons":{"archive":"Archive","avoid":"Avoid","cap-note":"{count} of {cap} lessons active. A short, strong list beats a long one, so each is followed reliably.","empty-description":"Coach {name} from a quick test, or accept a suggested lesson, and it appears here.","empty-title":"No lessons yet","hard-group":"Hard rules ({count})","prefer":"Prefer","soft-group":"Soft guides ({count})","subtitle":"What every reply follows.","title":"{name}'s lessons"},"mode":{"import-description":"Bring in the answers you already have and review them.","import-title":"Import answers","learn-description":"Review what {name} is learning from real conversations.","learn-title":"Learn as you go","test-description":"Talk to {name} as a customer and coach the replies on the spot.","test-title":"Quick test"},"nav":{"import":"Import answers","learn":"Learn as you go","quick-test":"Quick test","title":"Training"},"page":{"correction-saved":"Correction saved to knowledge","draft-dismissed":"Draft dismissed","evidence":"Evidence","import-eyebrow":"Imported answer","import-headline":"A drafted reply, {keyword}","import-headline-keyword":"ready to review","import-story":"Keep it as is, correct the facts, or coach the tone. Whatever you save is tagged with its source.","import-success":"{count} answer added to review | {count} answers added to review","learn-eyebrow":"Learned from real chats","learn-headline-content":"A missing answer, {keyword}","learn-headline-content-keyword":"ready to add","learn-headline-rule":"A habit worth {keyword}","learn-headline-rule-keyword":"teaching","learn-story":"Nothing reaches {name} until you save it.","lesson-saved":"Lesson added","lessons-button":"Lessons","pick-a-reply":"Pick a reply to coach","pick-a-reply-hint":"Choose a reply, a suggested lesson, or an imported answer.","sample-chips":{"order":"Where is my order?","refund":"Can I get a refund on a broken item?","shipping":"Do you ship internationally?"},"save-error":"Could not save. Try again.","session-error":"Could not reach the rehearsal session. Try again.","reply-failed":"Could not finish the reply. Try again.","stage-note":"Rehearsal · nothing here reaches customers"},"panel":{"chips-label":"From your knowledge base:","composer-placeholder":"Write a message as the customer...","demo-question":"Do you ship to Canada?","demo-title":"Ask a question, {watch} the answer come together","demo-title-watch":"watch","demo-value-knowledge":"Shipping and returns policy","demo-value-rules":"Keep replies short and friendly","greeting":"Hi! I'm {name}. Ask me anything your customers would.","next-reply":"Next reply","no-live-chat-channel":"Connect a live chat channel to test replies here.","previous-reply":"Previous reply","rail-empty-description":"Every reply {name} gives here gets explained in this panel: what it used, what rules applied, and whether the facts hold. Grade what comes back.","rail-empty-title":"Ask something to start","reply-pager":"{current} of {total}","stage-note":"Rehearsal. Nothing here reaches customers.","start-over":"Start over","subtitle":"Coach {name} in the sandbox, approve suggestions, keep the do's and don'ts.","tab-coach":"Coach mode","tab-rules":"Do's & don'ts","tab-suggestions":"Suggestions","testing-as":"Testing as","title":"Training","try-asking":"Try asking","turn-tab":"Reply {turn}"},"receipt":{"dos-and-donts":"Do's and don'ts","flagged":"Flagged","followed":"Followed","guided-answers":"Guided answers","knowledge":"Knowledge","none":"None","not-tested":"Not tested this turn","show-all":"Show all {count}","show-fewer":"Show fewer","skill":"Skill","skill-sample-data":"Ran with sample data","title":"What it used"},"rules":{"add":"Add a rule","add-title":"Add a rule","added":"Added {when}","archive":"Archive","archive-confirm-description":"{name} stops following it, and it leaves the board.","archive-confirm-title-do":"Archive this Do?","archive-confirm-title-dont":"Archive this Don't?","cap":"{count} of {cap}","coach-hint":"Rules also come from coaching. When you correct {name} in Coach mode or from a conversation, the rule lands here.","dialog-description":"{name} follows this in every reply, on every channel.","dont-hint":"For a don't, say what to do instead: Don't promise dates. Instead, share the shipping page.","edit":"Edit","edit-title":"Edit rule","group-empty":"No {lead} rules yet. Coach one in the sandbox or add one here.","group-empty-do":"No Do rules yet. Coach one in the sandbox or add one here.","group-empty-dont":"No Don't rules yet. Coach one in the sandbox or add one here.","just-now":"Just now","lead-do":"Do","lead-dont":"Don't","priority-hint":"Don't rules take priority when rules conflict.","save-changes":"Save changes","strength-always":"Always","strength-prefer":"Prefer","subtitle":"Plain-language rules {name} follows in every reply. The list stays short so every rule stays sharp.","text-placeholder":"Say it like you would coach a teammate.","test-error":"Could not create the test. Try again.","title":"Do's & don'ts","try-in-sandbox":"Try in the sandbox"},"source":{"feedback":"Gruvi","imported":"Imported","manual":"You","sandbox":"Sandbox"},"suggestions":{"approve-and-publish":"Approve and publish","approve-article-note":"Approving publishes this article to your knowledge base.","approve-rule":"Approve rule","approve-rule-note":"Approving adds this to {name}'s do's and don'ts.","demo-approved":"Approved","demo-evidence-meta":"From a correction in Coach mode","demo-evidence-quote":"Actually, we do cover import duties on replacement orders.","demo-title":"Approve a suggestion, {watch} it become a rule","demo-title-watch":"watch","dismiss":"Dismiss","empty-description":"{name} drafts a suggestion when it spots a pattern worth teaching. Approve it and it becomes a rule or an article.","empty-title":"All caught up","evidence-label":"Why {name} suggests this","filter-all":"All","filter-behavior":"Behavior","filter-knowledge":"Knowledge","import-answers":"Import answers","kind-behavior":"Do / don't","kind-knowledge":"Article","needs-review-before-publish":"Needs a review before it publishes","rail-empty":"Select a suggestion to see the evidence behind it and approve or dismiss it.","sample-badge":"Sample","sample-cta":"Open Coach mode","sample-note":"This is a preview. Real suggestions appear when you coach {name} in Coach mode or import answers.","sample-source":"From Coach mode","sample-text":"mention the free returns window when a customer asks about refunds","source-coached":"Drafted from your coaching"},"tabs":{"dos-and-donts":"Do's and don'ts","guided-answers":"Guided answers","training-mode":"Training mode"}},"typing":{"many":"{name} and {count} others are typing...","single":"{name} is typing...","two":"{name1} and {name2} are typing..."},"unarchive-customer":{"dialog":{"cancel":"Cancel","confirm":"Unarchive Customer","description":"Bring this customer back to your active list. Their threads were never touched.","title":"Unarchive {name}?"}},"voice-language":{"auto-detect":"Auto-detect","label":"Spoken language","no-matches":"No languages found","search":"Search languages","set-language":"Set language"},"voice-message":{"load-failed":"Audio failed to load","max-reached":"Maximum recording length reached","microphone-denied":"Microphone access was denied. Please allow microphone access in your browser settings.","preview":"🎤 Voice message","retry":"Retry","show-less":"Show less","show-more":"Show more","too-short":"Recording too short","transcribe-and-send":"Transcribe and send","transcribe-to-box":"Transcribe into the message box","transcribing":"Transcribing...","transcript-unavailable":"Transcript unavailable","transcription-failed":"Transcription failed","upload-failed":"Failed to upload voice message"},"voice-tray":{"send-my-voice":"Send my voice","title":"Record","transcribe-my-speech":"Transcribe my speech"},"welcome":"Welcome","workspace":{"access-denied":{"description":"You aren't a member of this workspace. Ask an admin to invite you, or switch to a workspace you have access to.","switch-workspace":"Go to my workspaces","title":"You don't have access to this workspace"},"companies":{"add":{"about-placeholder":"New company","about-subtitle":"Start with the company's name.","domain-heading":"Claim an email domain","domain-label":"Email domain","domain-placeholder":"acme.com","domain-skip-hint":"Optional. You can add or change domains later.","domain-subtitle":"New customers with emails on this domain join the company automatically.","done-description":"Claim more domains to grow it automatically, or assign people from their profiles.","done-title":"{name} is ready","finish":"Create company","freemail-warning":"Personal email providers can't be claimed.","linked-done-plural":"{count} customer linked | {count} customers linked","logo-upload":"Upload logo","name-label":"Name","name-placeholder":"Acme Corp","steps":{"about":"About","domain":"Domain","done":"Done"},"title":"Add company","toast":{"create-failed":"Couldn't create the company. Try again."},"view-company":"View company"},"list":{"card":{"customers":"no customers | 1 customer | {count} customers","open":"{count} open"},"no-companies":{"description":"Every company you add groups its customers, threads, and ratings into one account view.","title":"Your company directory starts here"},"no-matches":{"description":"Try a different name or domain.","title":"No companies match"},"search-placeholder":"Search companies","sort":{"contacts":"Contacts","contacts-hint":"Most people first","last-contact":"Last contact","last-contact-hint":"Who wrote in most recently","name":"Name","name-hint":"A to Z","open-threads":"Open threads","open-threads-hint":"Most open work first"},"views":{"all":"All","open":"Open threads"}},"multi-picker":{"confirm":"Use companies | Use {count} company | Use {count} companies","description":"Search your companies and pick one or more.","remove":"Remove {name}","selected":"Picked","title":"Pick companies"},"profile":{"customers":{"add-aria":"Add customer","empty":"No customers yet. Add one, or claim a domain to link them automatically.","load-more":"Show more","title":"Customers"},"domains":{"claim-plural":"{count} existing customer has {'@'}{domain} emails | {count} existing customers have {'@'}{domain} emails","claim-action":"Link all {count}","toast":{"claim-failed":"Couldn't link the customers. Try again.","claimed-by-other":"This domain is already claimed by {name}"}},"error":{"description":"Refresh the page or pick another company.","title":"Couldn't load this company"},"header":{"add-customer":"Add customer","added-since":"Added {date}","crm-synced":"{provider} · Synced {time}","crm-synced-pending":"{provider}","edit-logo":"Change logo","synced-from":"Synced from {provider} · {time}","synced-from-aria":"Open in {provider}","synced-from-pending":"Synced from {provider}"},"identities":{"add-aria":"Add identity","draft-cancel-aria":"Cancel","empty":"No identities yet. Add a domain to link new customers automatically.","invalid":{"domain":"Enter a valid domain","email":"Enter a valid email address","phone":"Enter a valid phone number","website":"Enter a valid URL"},"placeholder":{"domain":"acme.com","email":"billing{'@'}acme.com","phone":"+1 555 0100","website":"https://acme.com"},"remove-aria":"Remove {value}","title":"Identities","toast":{"add-failed":"Couldn't add the identity. Try again.","already-on-company":"This identity is already on this company","remove-failed":"Couldn't remove the identity. Try again."},"type":{"domain":"Domain","email":"Email","phone":"Phone","website":"Website"}},"menu":{"aria":"Company actions","delete":"Delete","rename":"Rename"},"properties":{"empty":"Define company properties to track account-level details.","manage":"Manage company properties","title":"Properties"},"threads":{"empty-hint":"The first time someone here reaches out, the thread shows up on this page."},"rename":{"confirm":"Save","title":"Rename company"},"stats":{"customers":"no customers | 1 customer | {count} customers","open-threads":"no open threads | 1 open thread | {count} open threads"},"toast":{"logo-failed":"Couldn't update the logo. Try again.","rename-failed":"Couldn't rename the company. Try again."}},"title":"Companies","toast":{"delete-failed":"Couldn't delete the company. Try again."},"welcome":{"add-company":"Add company","hint":"Takes about a minute","step-1-description":"Name it and claim an email domain like acme.com.","step-1-title":"Create a company","step-2-description":"New customers with emails on that domain are linked the moment they write in.","step-2-title":"Customers join automatically","step-3-description":"Every customer, thread, and rating rolled up in one profile.","step-3-title":"See the whole account","title":"Group your customers into companies"}},"customers":{"actions":{"archive":"Archive customer","block":"Block customer","delete":"Delete customer","remove-photo":"Remove photo","unarchive":"Unarchive customer","unblock":"Unblock customer"},"add":{"button":"Add customer","close-confirm-confirm":"Discard","close-confirm-description":"An import is queued. Closing now won't stop it, but you'll lose this view.","close-confirm-title":"Close while importing?","coming-soon":"Coming soon","create":{"about-heading":"Who are you adding?","about-placeholder":"Who are you adding?","about-subtitle":"A name and a photo are all we need to start.","avatar-hint":"We'll generate a colored avatar from their name. Upload a photo to replace it.","avatar-remove":"Remove","avatar-replace":"Replace","avatar-upload":"Upload photo","avatar-uploaded":"Photo attached, ready to save.","city-label":"City","city-placeholder":"Brooklyn","coming-soon-helper":"Channels we'll support once outbound is ready.","company-label":"Company","conflict-action":"Open profile","conflict-text":"Someone with this email is already here.","country-label":"Country","country-none":"Not set","country-placeholder":"Pick a country","details-heading":"Add a little context","details-subtitle":"Where they are, and how you'd group them. All optional.","done-description":"They're on your list. Ready when you want to start a conversation.","done-title":"{name} added.","done-view-profile":"View profile","email-label":"Email address","email-placeholder":"name{'@'}example.com","finish":"Add customer","labels-add":"Add labels","labels-empty":"No customer labels yet. You can add some from the Labels settings.","labels-heading":"Tag them, optional.","labels-label":"Labels","labels-loading":"Loading labels...","labels-none":"No labels match","labels-search":"Search labels","labels-subtitle":"Use labels to group customers by relationship or stage.","location-heading":"Where are they based?","location-label":"Location","location-subtitle":"Helps with timezone hints and routing later.","name-label":"Name","name-placeholder":"Jane Cooper","note-required":"Required: name and email. Everything else can be edited later.","reach-heading":"How do you reach them?","reach-subtitle":"An email lets you start a conversation right away.","title":"Add a customer"},"import":{"and-more":"...and more","coming-soon-heading":"More sources coming soon","done-description":"We'll keep importing in the background. The list will refresh as customers come in.","done-title-plural":"{count} customer on the way. | {count} customers on the way.","duplicate-merge":"Merge with existing","duplicate-merge-sub":"Update existing customers with the values from the file.","duplicate-skip":"Skip duplicates","duplicate-skip-sub":"Keep existing customers as-is when emails already exist.","import-from-hubspot":"Import from HubSpot","mapping-empty":"We couldn't read this file. Please upload a different one.","mapping-field-city":"City","mapping-field-city-sub":"Optional","mapping-field-country":"Country","mapping-field-country-sub":"ISO-2 code (US, DE...)","mapping-field-email":"Email","mapping-field-email-sub":"Required","mapping-field-labels":"Labels","mapping-field-labels-sub":"Comma-separated names","mapping-field-name":"Name","mapping-field-name-sub":"Required","mapping-heading":"Map your columns","mapping-loading":"Reading your file...","mapping-none":"Not mapped","mapping-preview-empty":"No preview yet","mapping-subtitle":"Match the columns from your file to the customer fields.","mapping-total-plural":"{count} row ready to import. | {count} rows ready to import.","method-csv":"CSV file","method-csv-sub":"Comma-separated, UTF-8","method-xlsx":"XLSX file","method-xlsx-sub":"Microsoft Excel spreadsheet","review-duplicates-heading":"When an email already exists","review-heading-plural":"Importing {count} customer | Importing {count} customers","review-mapping-heading":"Column mapping","review-not-mapped":"Not mapped","review-start":"Start import","review-subtitle":"We'll process them in the background. You can keep working.","running-body":"We'll keep going in the background. You can close this and the list will refresh as new customers are created.","running-close":"Close","running-headline":"Your import is running","running-rows":"{count} rows in the queue","title":"Import customers","upload-clear":"Choose another file","upload-cta":"Drop a CSV or XLSX here, or click to browse","upload-heading":"Upload your file","upload-helper":"We'll auto-detect your columns. You can adjust them in the next step.","upload-limits":"Up to 10 MB and 50,000 rows.","upload-ready":"Ready to read.","upload-template":"Download CSV template","upload-too-large":"That file is over 10 MB. Please split it and try again.","upload-unsupported":"Please upload a CSV or XLSX file.","upload-uploading":"Uploading... {percent}%"},"menu-create":"Create new","menu-create-sub":"Add one customer manually","menu-import":"Import","menu-import-sub":"Bulk import from CSV or XLSX","steps":{"about":"About","details":"Details","done":"Done","labels":"Labels","location":"Location","mapping":"Map columns","reach":"Reach","review":"Review","running":"Done","upload":"Upload"}},"channel":{"chat-widget":"Live chat","email":"Email","telegram":"Telegram","whatsapp":"WhatsApp"},"dialog":{"description":"Quick view of this customer, threads, properties, identities, topics, and notes.","key-info":{"contact-empty":"No contact methods yet.","live-chat-session":"Live chat session","sections":{"contact":"Contact","demographics":"Demographics","topics":"Topics they contact about"},"tiles":{"joined":"Joined","language":"Language","location":"Location","preferred-channel":"Preferred channel","rating":"Rating"},"topics-empty":"Topics will appear here once we've analyzed a few threads."},"tabs":{"identities":"Identities","key-info":"Key info","notes":"Notes","properties":"Properties","threads":"Threads","topics":"Topics"},"title":"{name}","title-loading":"Customer","topics-empty":{"description":"Topics appear here once this customer has had a few threads we can analyze.","title":"No topics yet"},"view-full-profile":"Open profile"},"hover-card":{"error":"Couldn't load this customer.","open":"Open customer","threads-open":"{count} open thread | {count} open threads","threads-total":"{count} thread | {count} threads"},"list":{"card":{"open":"Open","proposals":"{count} proposal | {count} proposals","threads":"{count} thread | {count} threads"},"count":"{count} customer | {count} customers","empty":{"description":"No customers match these filters yet.","title":"Nothing here"},"filters":{"channel":"Channel","channels":{"chat-widget":"Live chat","email":"Email","telegram":"Telegram","whatsapp":"WhatsApp"}},"no-customers":{"description":"Every contact you add becomes a profile with their channels, conversation history, and team notes.","title":"Your customer directory starts here"},"no-matches":{"clear-filters":"Clear filters","description":"Try a different search or remove a filter to see more results.","title":"No customers match"},"scroll-more":"Scroll for more","search-people":"Search people by name or email","search-placeholder":"Search by name, email, phone...","sort":{"aria":"Sort by {sort}","label":"Sort","last-contact":"last contact","name":"name","options":{"last-contact":"Last contact","last-contact-hint":"Who wrote in most recently","name":"Name","name-hint":"A to Z","rating":"Rating","rating-hint":"Highest rated first","total-threads":"Total threads","total-threads-hint":"Busiest people first"},"rating":"average rating","total-threads":"thread count"},"status":{"active":"active","archived":"archived","label":"Show"},"title-with-count":"{count} Customer | {count} Customers","views":{"all":"All","chat-widget":"Live chat","email":"Email","telegram":"Telegram","whatsapp":"WhatsApp"}},"duplicates":{"banner":{"review":"Review duplicate","review-short":"Review","unverified-body":"This customer claimed {email} but has not verified it. The {provider} contact {name} uses the same address.","unverified-chip":"Unverified","unverified-title":"This may be an existing customer","verified-body":"The {provider} contact {name} uses {email}. This customer uses the same address.","verified-title":"We found a duplicate customer"},"dialog":{"linked-to":"Linked to {provider}","merge-cta":"Merge customers","note":"The name in parentheses comes from {provider}. To change it, correct the contact in {provider} and the display updates on the next sync. Identical values are shown once.","origin-crm":"{provider} contact, synced","origin-native":"In Gruvi, added {date}","result-label":"After merging","subtitle":"Both records describe the same person. Merging keeps every thread and note from both. Nothing changes in {provider}.","threads-count":"No threads | {count} thread | {count} threads","title":"Merge duplicate customers"},"keep-separate":"Keep separate","toast":{"dismiss-error":"Couldn't dismiss the suggestion. Try again.","merge-error":"Couldn't merge the customers. Try again."}},"merge":{"confirm":{"cancel":"Back","card-source":"Source","card-source-note":"Will be removed","card-target":"Target","card-target-note":"Absorbs everything","cta":"Merge profiles","cta-working":"Merging profiles","slow-hint":"Merging a long history takes a bit. Keep this window open.","subtitle":"Combine two profiles into one. This can't be undone.","summary":"All identities, threads, and notes from {source} will move to {target}.","title":"Confirm merge","type-prompt":"Type {name} to confirm"},"pick":{"cancel":"Cancel","empty":"No customers match that search.","next":"Continue","search-placeholder":"Search by name or identity","subtitle":"Pick the profile that should absorb {source}.","title":"Merge into another profile"},"toast":{"error-fallback":"Couldn't merge"},"trigger":"Merge into…"},"multi-picker":{"confirm":"Use customers | Use {count} customer | Use {count} customers","description":"Search your customers and pick one or more.","remove":"Remove {name}","selected":"Picked","title":"Pick customers"},"picker-empty":"No customers yet","placeholder":{"description":"A directory of every customer who's contacted you, with profile details and conversation history. Shipping soon.","title":"Customers, coming soon"},"presence":{"away":"Away","last-seen":"Last seen {time}","offline":"Offline","online":"Online","recent":"Recently active"},"profile":{"activity":{"title":"Activity"},"avatar-editor":{"cancel":"Cancel","choose-photo":"Choose photo","description":"Upload a photo to replace the colored initials.","remove":"Remove photo","title":"Customer photo","toast":{"update-failed":"Could not update the photo.","upload-failed":"Could not upload the photo."}},"company":{"add":"Add to company","change":"Change","create-prefix":"Create","none":"Not part of a company","picker-empty":"No companies yet","remove":"Remove from company","title":"Company","toast":{"set-failed":"Couldn't update the company. Try again."},"view-aria":"View {name}"},"contact-details":{"removed":"Removed {date}","removed-by-provider":"Removed by {provider} update, {date}","title":"Contact details","type":{"email":"Email","phone":"Phone"}},"empty":{"description":"Select someone from the list to see their profile, conversation history, and notes.","title":"Pick a customer to begin."},"error":{"description":"Couldn't load this customer. Try again in a moment.","title":"Something went wrong"},"header":{"crm-synced":"{provider} · Synced {time}","crm-synced-pending":"{provider}","edit-photo":"Change photo","local-time":"Their local time","no-location":"No location","no-ratings":"No ratings","preferred-channel-tooltip":"Preferred channel for this customer","rename-hint":"Click to rename","synced-from":"Synced from {provider} · {time}","synced-from-aria":"Open in {provider}","synced-from-pending":"Synced from {provider}"},"identities":{"add":{"channel-step":{"coming-soon-helper":"We'll let you add this channel soon.","email-helper":"Add an email address they already use.","email-label":"Email","heading":"Pick a channel","subtitle":"How will they be reached?"},"conflict":{"belongs-to":"{identifier} belongs to \"{name}\".","counts":"{threads} threads, {notes} notes.","merge-cta":"Merge into this profile","question":"Are these the same person?","view":"View {name}"},"done":{"body-added":"{identifier} now appears on their profile.","body-merged":"Their threads, notes, and channels now live on this profile.","close":"Close","stat-identities":"channels","stat-notes":"notes","stat-threads":"threads","title-added":"Added the new way to reach them","title-merged":"Merged {name} into {target}"},"empty-cta":"Add a way to reach them","identifier-step":{"already-on-customer":"This email is already on this profile.","email-label":"Email","email-placeholder":"name{'@'}example.com","heading":"Add an email address","subtitle":"We won't send a verification email."},"merge":{"confirm-cta":"Merge","confirm-line-identity":"The email {identifier} moves here.","confirm-line-notes":"{n} notes move here.","confirm-line-threads":"{n} threads move here.","confirm-title":"Merge \"{source}\" into \"{target}\"","confirm-warning":"This can't be undone."},"next":"Continue","steps":{"channel":"Channel","done":"Done","identifier":"Details"},"submit":"Add","title":"Add a way to reach them"},"empty":"No identities linked yet.","inline":{"add-aria":"Add a way to reach them","already-on-customer":"This email is already on this profile.","conflict":{"belongs-to":"{identifier} belongs to \"{name}\".","counts":"{threads} threads, {notes} notes.","merge-cta":"Merge into this profile","question":"Are these the same person?","view":"View {name}"},"draft":{"cancel-aria":"Cancel","email-placeholder":"name{'@'}example.com","invalid-email":"Enter a valid email address."},"empty-cta":"Add a way to reach them","menu":{"coming-soon":"Coming soon","email-label":"Email","telegram-label":"Telegram","whatsapp-label":"WhatsApp"},"merge":{"cancel":"Cancel","confirm-cta":"Merge","confirm-line-identity":"The email {identifier} moves here.","confirm-line-notes":"{n} notes move here.","confirm-line-threads":"{n} threads move here.","confirm-title":"Merge \"{source}\" into \"{target}\"","confirm-warning":"This can't be undone."},"remove":{"aria":"Remove {identifier}","confirm-button":"Remove","confirm-description":"We'll stop showing this on the profile. Past threads stay attached.","confirm-prompt":"Type {identifier} to confirm:","confirm-title":"Remove this contact channel?"}},"held-by":"Also on {name}. Open that profile to message it.","no-public-username":"No public username","send-action":"Start a new thread to {identifier}","title":"Ways to reach them"},"location-editor":{"cancel":"Cancel","city-placeholder":"City (optional)","clear":"Clear","clear-country":"Clear country","no-matches":"No matching countries","save":"Save","search-country":"Search country...","source-detected":"Found from their last chat. Your edit will stay.","source-manual":"Someone set this. Clear it to go back to automatic.","toast":{"update-failed":"Could not update the location."}},"member-since":"Member since {date}","briefing":{"action-failed":"Could not update this.","action":{"dismiss":"Dismiss","generate":"Read their history","refresh":"Refresh","refreshing":"Refreshing"},"description":"What happened with this customer, and what's worth raising next time.","empty-example-highlight":"Asked about upgrading twice this month","empty-example-lowlight":"Same delivery problem in three threads","empty-example-talking-point":"Ask whether the refund actually landed","empty-headline":"Know where things stand","empty-hint":"Gruvi reads their threads, the actions taken, and your notes, then surfaces moments like:","footer":{"summary":"Read {threads} threads and {actions} actions · Updated {time}","summary-threads":"Read {threads} threads · Updated {time}"},"generating-headline":"Reading their history","no-history-headline":"Nothing to read yet","no-history-hint":"Once this customer has threads, Gruvi reads them and surfaces moments like:","nothing-found-headline":"Nothing stands out yet","nothing-found-hint":"Gruvi read their history and found nothing worth flagging. It checks again when a thread resolves.","generating-hint":"Going through their threads and the actions taken. This takes about 20 seconds.","group":{"highlights":"Highlights","lowlights":"Lowlights","talking-points":"Things to talk about"},"outcome":{"fix-unconfirmed":"Fix unconfirmed","resolved":"Resolved","still-open":"Still open"},"source":{"actions":"no actions | {count} action | {count} actions","crm-records":"no CRM records | {count} CRM record | {count} CRM records","more":"{count} more","notes":"no notes | {count} note | {count} notes","open-thread":"Open thread","ratings":"no ratings | {count} rating | {count} ratings","threads":"no threads | {count} thread | {count} threads"},"title":"What to know"},"memory":{"cancel":"Cancel","category":{"commitment":"Commitment","communication":"Communication","preference":"Preference","product-context":"Product context"},"delete":"Delete memory","delete-description":"The agent will no longer remember this about the customer.","delete-failed":"Could not delete this memory.","delete-title":"Delete this memory?","description":"Stable details learned from what this customer explicitly shared.","edit":"Edit memory","edited":"Edited by your team","empty-description":"Safe, durable details will appear after resolved conversations.","empty-example-channel":"Prefers email over live chat.","empty-example-plan":"Is on the annual Growth plan.","empty-example-replies":"Likes short, direct replies.","empty-example-shipping":"Always ships to their Berlin office.","empty-example-shopify":"Runs their store on Shopify.","empty-example-store-credit":"Prefers store credit over refunds.","empty-headline":"The agent remembers what matters","empty-hint":"Lasting details about this customer appear here as threads resolve, like:","empty-title":"Nothing remembered yet","expires":"Expires {time}","learned":"Learned automatically","pin":"Pin memory","pinned":"Pinned","save":"Save","title":"Customer memory","unpin":"Unpin memory","update-failed":"Could not update this memory.","updated":"Updated {date}"},"new-thread":{"button":"New thread","coming-soon-hint":"Coming soon","error-blocked":"This customer is blocked. Unblock them before starting a new thread.","error-channel-not-deliverable":"This channel can't send yet. Verify DKIM for its sending domain in Settings.","error-customer-has-no-email":"This customer doesn't have an email address on file yet.","error-generic":"Could not start a new thread. Try again in a moment.","error-no-email-channel":"No email channel is set up for this workspace. Add one in Settings to send email from here.","from-prefix":"from","picker-empty":"No outbound channels are ready to send.","picker-loading":"Loading channels...","picker-subtitle":"Pick the channel to send from","picker-title":"Send new thread to {recipient}","reason-dkim-not-verified":"Verify DKIM"},"notes":{"add-failed":"Could not save your note.","add-placeholder":"Leave a note for your team...","attach-file":"Attach file","delete-confirm-button":"Delete note","delete-confirm-description":"This will permanently remove the note from this customer's profile.","delete-confirm-title":"Delete this note?","delete-failed":"Could not delete the note.","emoji":"Insert emoji","empty":"No notes yet. Leave the first one for your team.","internal-hint":"Internal only, not visible to the customer.","mention-empty":"No teammates match","save":"Save note","send":"Send note","title":"Internal notes","transcribing":"Transcribing voice note...","voice-record":"Record voice note","voice-too-short":"Recording is too short."},"properties":{"boolean":{"false":"No","true":"Yes","unset":"Not set"},"crm":{"read-only":"Filled by {provider}. You can only change it in {provider}.","two-way":"Synced with {provider}. Changes here are sent to {provider}."},"date":{"clear":"Clear","placeholder":"Pick a date","save":"Apply"},"empty":"No properties defined yet.","empty-cta":"Set them up","errors":{"invalid-number":"Enter a valid number.","invalid-url":"Enter a valid URL.","save-failed":"Could not save the property value."},"manage":"Manage properties","not-set":"Not set","number":{"placeholder":"Type a number"},"select":{"clear":"Clear selection","no-matches":"No matching options","no-options":"No options defined","placeholder":"Pick an option","search":"Search options..."},"text":{"placeholder":"Type a value"},"heading":"Customer properties","title":"Properties","url":{"open":"Open link","placeholder":"Paste a link"}},"stats":{"avg-csat":"Avg CSAT","first-contact":"First contact","messages":"Messages","no-first-contact":"Never","open":"Open","resolved":"Resolved"},"threads":{"empty":"No conversations yet.","empty-headline":"No threads yet","no-visible-threads":"No threads you can view","empty-hint":"The first time this customer reaches out, the thread shows up here.","open-count":"{count} open","open-in-new-tab":"Open {title} in a new tab","resolved-count":"{count} resolved","section-title":"Recent threads","title":"Recent conversations · {total} total"},"toast":{"update-failed":"Could not update the customer."},"topics":{"close-topic":"Close {name}","contributions-error":"Conversations could not load.","count":"{count} topic | {count} topics","empty-headline":"No topics yet","empty-hint":"Topics appear here as this customer's conversations come in.","error":"Topics could not load.","evidence-region-label":"Conversations about {name}","no-contributions":"No conversations to show for this topic right now.","proposal":{"action":{"save-new":"Save as new topic","skip":"Skip","use-existing":"Use \"{name}\" instead"},"label":"AI proposal","merge-conjunction":". But it's","merge-prefix":"Looks like a new theme,","merge-similar-to":"similar to","new-prefix":"New theme detected,","retro-hint-plural":"It would also tag {count} recent thread matching this theme. | It would also tag {count} recent threads matching this theme."},"retry":"Try again","share-of-conversations":"{count} of {total} conversations · {share}","show-more-pills":"+{count} more","show-more-threads":"Show more","title":"What they talk about","toast":{"approved":"Added \"{name}\" to the topic bank.","error":"Could not update the proposal.","merged":"Tagged with \"{name}\"."}}},"scope":{"companies":"Companies","customers":"Customers","label":"Choose people or companies"},"status":{"active":"Active","archived":"Archived","blocked":"Blocked","merged":"Merged"},"title":"Customers","toast":{"archive-failed":"Could not archive this customer.","delete-failed":"Could not delete this customer.","unarchive-failed":"Could not unarchive this customer.","unblock-failed":"Could not unblock this customer."},"unnamed":"Unnamed customer","welcome":{"add-customer":"Add a customer","step-1-description":"Add one by hand to start a new conversation or store contact details.","step-1-title":"Add a customer","step-2-description":"Bring in a CSV or XLSX and we'll create everyone in the background.","step-2-title":"Import a list","step-3-description":"Anyone who reaches you over email, live chat, or Telegram shows up here automatically.","step-3-title":"Threads link automatically","title":"It's easy to add new customers","wizard-hint":"You can always import later from the add menu in the list header."}},"group-chat":{"actions":{"add-to-thread":"Add to thread","create-thread":"Create thread","move-to-thread":"Move to another thread","open-thread":"Open thread","remove-from-thread":"Remove from thread"},"card":{"active-threads":"{count} active thread | {count} active threads","badge":"Group chat","no-other-active-threads":"No other active threads.","no-threads":"No threads yet. Create one from any message.","part-of":"In {group}","participants":"{count} participant | {count} participants","resolved-section":"Resolved and closed ({count})","state-disconnected":"Disconnected","state-needs-permission":"Needs permission","unread":"{count} unread","view-threads":"View {count} thread | View {count} threads"},"child":{"linked-from":"Added automatically from {group}","started-from":"This thread started from this message","started-from-group":"This thread started from a message in {group}"},"connect-page":{"already-connected":"This group is already connected.","confirm":"Create Group chat","expired":"This connection request expired. Add the bot again to reconnect.","failed":"The connection could not be completed. Add the bot to the group again to start over.","forbidden":"You do not have permission to connect this group. Ask a Gruvi admin to complete it.","not-found":"This connection request is no longer available."},"composer":{"group-placeholder":"Write a message to the group","open-in-transcript":"Open in group chat","sent-without-reply":"Sent as a plain message. The one you replied to is gone from Telegram."},"create":{"created":"Thread created","creating":"Creating thread","customer":"Customer","customer-required":"Choose who this thread is for.","choose-person":"Choose a person","description":"Start a thread from this message and pick what goes into it.","finding-related":"Finding related messages","goes-in-count":"{count} message | {count} messages","goes-in-label":"Goes in too","leave-out":"Leave out","people-in-group":"People in this group","sla-policy":"SLA policy","success-open":"View thread","title":"Create thread"},"instructions":{"connected":"Connected. Opening the Group chat.","copy-username":"Copy","detected":"{group} was found. Finish the confirmation in Telegram.","no-bot":"Connect your Telegram bot before adding it to groups.","open-telegram-settings":"Open Telegram settings","step-1":"Open Telegram and create a group.","step-2":"Add {botUsername} as an administrator.","step-2-any":"Add one of your bots as an administrator.","step-3":"Confirm the connection in Telegram.","title":"Connect a Telegram group","waiting":"The Group chat will appear here automatically."},"message":{"delivery-detail":"Sent by {agent}, delivered by {bot}","edited":"edited"},"new-menu":{"group-chat":"New group chat","group-chat-description":"A shared chat with a customer's team. Each request becomes its own thread.","group-chat-help-aria":"What is a group chat?"},"participant":{"appear-hint":"Everyone else appears here once they send a message.","unseen":"{count} more person in this group | {count} more people in this group","unseen-hint":"Telegram does not tell us who they are until they write.","left":"Left the group","members-on-telegram":"{total} members on Telegram, {seen} seen here","no-username":"No public username"},"picker":{"back":"Choose another channel","telegram-hint":"Create a Telegram group and add the Gruvi bot.","title":"Create Group chat","whatsapp-soon":"Coming soon"},"identity":{"confirmed":"Linked. From now on your messages in this group appear as you. Earlier ones stay as they are.","is-this-you":"Is this you?","no":"No","sheet":{"a-teammate":"A teammate","already-linked":"already linked","checking":"Checking your Telegram account","connect-steps":"Open the Gruvi bot from {name}'s Telegram account and press Start. That links {name} to you.","expires-in":"Expires in {time}","in-telegram":"in Telegram","link-title":"Link {name} to you","not-this-person":"That Telegram account is not {name}.","scan-or-open":"Scan with that phone, or open it here.","taken-by-teammate":"{name} is already linked to another teammate.","use-their-account":"Use the account {name} writes from in this group.","waiting-for-start":"Waiting for Start in Telegram","connect-description":"Press Start on the Gruvi bot from the Telegram account that is {name}. That tap is the proof. Your notifications stay as they are.","linked":"Linked. From now on your messages in shared Telegram groups appear as you. Earlier ones stay as they are.","mismatch":"That Telegram account is not this person. Nothing was changed.","taken":"This person is already linked to another teammate. Nothing was changed.","title":"Is {name} you?","try-another":"Try another account","waiting":"Waiting for you to press Start in Telegram."},"stop":"Stop","this-is-me":"This is me","yes-me":"Yes, that's me","you":"You"},"routing":{"added":"Added to this thread","added-automatically":"Added automatically","added-to":"Added to","move":"Move","created":"Thread created from this message","goes-in-with":"Goes in with","open-new-tab":"Open {title} in a new tab","pending":"Finding the right thread…","remove":"Remove","removed-from":"Removed from {number}","reopened-by-reply":"Reopened by {name}'s reply","undo":"Undo"},"settle":{"close-cascade":"Close the group and its threads","close-cascade-hint":"Its open threads are closed too.","close-only":"Close the group only","close-title":"Close group chat","confirm-close":"Close","confirm-resolve":"Resolve","description":"This group has {count} open thread. | This group has {count} open threads.","only-hint":"Its open threads stay open.","resolve-cascade":"Resolve the group and its threads","resolve-cascade-hint":"Its open threads are resolved too.","resolve-only":"Resolve the group only","resolve-title":"Resolve group chat"},"settings":{"auto-link":"Add messages to threads automatically","auto-apply":"Act on suggestions automatically","auto-apply-hint":"Creates the thread or adds the message without asking. Off means an agent approves each one.","auto-link-hint":"Gruvi only does this when it is sure. Otherwise it suggests.","media-ask":"Always ask","media-follow-sender":"Follow last message","media-leave":"Leave in group","media-routing":"Photos and videos","media-routing-hint":"Photos, videos and stickers have no text to read. Gruvi goes by who sent them.","participants":"Participants","signature":{"at-end":"At the end","at-start":"At the start","brand":"First name and company","first-name":"First name","label":"Agent signature","none":"No signature","hint":"In Gruvi the reply stays yours. In Telegram the bot sends it with this name.","placement":"Placement","preview-label":"In Telegram","preview-message":"The reset link is fixed now.","preview-none":"No name is added to the message.","style":"Style"},"suggest-threads":"Suggest new threads with AI","suggest-threads-hint":"Gruvi points out messages that look like a new problem. You decide what to create.","ai-title":"AI settings","participants-open":"Open participants","participants-seen":"{count} people seen in this group","action-error":"That did not go through. Please try again.","none":"None","title":"Group chat settings"},"state":{"disconnected":"Telegram is disconnected. History is preserved. Re-add the bot to reconnect.","disconnected-composer":"Sending is off while Telegram is disconnected.","needs-permission":"Gruvi cannot read all group messages. Make the bot an administrator to continue.","needs-permission-help":"How to fix this","permission-gap":"Some messages may be missing from this period.","restored":"Connection restored"},"suggestion":{"add-existing":"Add to existing thread","add-to-number":"Add to {number}","another-thread":"Another thread","create":"Create thread","dismiss":"Dismiss","goes-in-count":"{count} more message goes in with this | {count} more messages go in with this","existing-thread":"Looks like an existing thread","new-thread":"New thread","part-of-thread":"Part of {number}","possible-new-thread":"Possible new thread","private-tag":"Internal only","title-label":"Thread title"},"transcript":{"continued-from":"Continued from {number}","empty":"Connected. Messages sent from now on will appear here.","no-history":"Messages sent before the connection stay in Telegram only."},"view":{"connected":"Connected","connection":"Connection","drawer-title":"Group chat details","threads-title":"Threads","state-active":"Active","title-aria":"Group chat name"}},"members":{"invites":{"actions":{"no-actions":"No actions available","revoke":"Revoke invite"},"description":"Manage pending invitations to your workspace.","dialog":{"admin-description":"Full access and settings","already-in-list":"{email} is already in your list.","already-invited":"{email} already has an invite waiting.","already-member":"{email} is already a member.","default-role":"Default role","description":"Send invitations to add new members to your workspace.","email-hint":"Separate multiple addresses with Enter or a comma, or paste a whole list.","email-label":"Email address","email-placeholder":"colleague{'@'}company.com","emails-label":"Email addresses","expiry-hint":"Invites expire after 7 days.","invalid-email":"That doesn't look like a valid email address.","invites-to-send":"Invitations to send","member-description":"Can view and collaborate","remove-email":"Remove {email}","role-label":"Invite as","send-button":"Send {count} Invite | Send {count} Invites","title":"Invite Team Members"},"empty":{"description":"Send invitations to add new members to your workspace.","title":"No Pending Invitations"},"revoke-dialog":{"confirm":"Revoke Invite","description":"Are you sure you want to revoke the invitation for {email}? They will no longer be able to join using this invitation.","title":"Revoke Invitation"},"row-expires":"Expires {date}","row-sent":"Sent {date}","send-invite":"Invite someone","status":{"accepted":"Accepted","declined":"Declined","expired":"Expired","pending":"Pending","revoked":"Revoked"},"table":{"email":"Email","expires":"Expires","role":"Role","sent":"Sent","status":"Status"},"title":"Pending Invitations","toast":{"revoke-error":"Failed to revoke invitation","send-error":"Failed to send invitations"},"welcome":{"invite-someone":"Invite your first teammate","step-1-description":"Type or paste your teammates' addresses, as many as you like.","step-1-title":"Add email addresses","step-2-description":"Members handle conversations. Admins also manage settings and members.","step-2-title":"Pick a role","step-3-description":"One click on the email link and they're in. Invites expire after 7 days.","step-3-title":"They join your workspace","title":"It's easy to grow your team","wizard-hint":"You can revoke an invite anytime before it's accepted."}},"list":{"actions":{"edit-role":"Edit role","remove":"Remove member"},"description":"Manage your team members and their roles.","edit-role-dialog":{"admin-description":"Full access and settings management","current":"Current","custom-role-tier-admin":"Custom role with admin-level access","custom-role-tier-member":"Custom role with member-level access","custom-roles-heading":"Custom roles","description":"Change the role for {name}.","member-description":"Can view and collaborate","title":"Edit Member Role"},"empty":{"description":"Invite team members to start collaborating.","title":"No Members Yet"},"invite-members":"Invite someone","passkey-enabled":"Passkey","passkey-missing":"No passkey registered","remove-dialog":{"confirm":"Remove Member","description":"Are you sure you want to remove {name} from this workspace? They will lose access to all workspace resources.","title":"Remove Member"},"table":{"joined":"Joined","member":"Member","role":"Role"},"title":"Workspace Members","toast":{"remove-error":"Failed to remove member","role-update-error":"Failed to update member role"}},"sidebar":{"all-members":"All Members","group":"Members","pending-invites":"Pending Invites","presence":"Presence","title":"Members"}},"new-thread":{"body-aria":"Message body","body-placeholder-from-customer":"Type the customer's message exactly as they said it. We'll thread their reply back here.","body-placeholder-to-customer":"Write your message...","cancel":"Cancel","channel-empty":"No outbound channels ready. Verify DKIM in Settings.","channel-loading":"Loading channels...","channel-popover-heading":"Send from","channel-reason-dkim":"Verify DKIM","channel-search-placeholder":"Search channels","create-back-aria":"Back to search","create-customer-footer-cancel":"cancel","create-customer-footer-submit":"create","create-customer-heading":"Create new customer","create-customer-name-label":"Name","create-customer-name-placeholder":"Customer's name","create-customer-prefix":"Create new customer","create-customer-submit":"Create","customer-clear-aria":"Clear customer","customer-empty-recent":"No recent customers yet.","customer-empty-search":"No customers match \"{query}\".","customer-locked-aria":"Customer is locked","customer-no-email":"No email on file","customer-recent-heading":"Recent","customer-results-heading":"Results","customer-search-placeholder":"Search by name or email","dialog-subtitle-from-customer":"Pick the customer you spoke with and the channel where this conversation belongs.","dialog-subtitle-to-customer":"Pick a channel and the customer you want to reach.","dialog-tag":"New thread","dialog-title-from-customer":"Add a thread on behalf of a customer","dialog-title-to-customer":"Start a new thread","discard-cancel":"Keep editing","discard-confirm":"Discard","discard-description":"Your message will be lost.","discard-title":"Discard draft?","draft-badge":"Draft","empty-subtitle-from-customer":"Type what they said in their own words. They'll get a copy so they can reply.","empty-subtitle-to-customer":"Write your message below and we'll send it from your channel.","empty-title-from-customer":"Add a message from them","empty-title-to-customer":"Start a new thread","error-assignee-not-member":"The selected assignee is no longer a member of this workspace.","error-channel-type-not-supported":"This channel type isn't supported yet for new threads.","error-generic":"Couldn't start the thread. Try again.","error-labels-invalid":"One or more selected labels were archived or removed.","error-no-body":"Write a message before sending.","error-no-channel":"Pick a channel before sending.","error-no-customer":"Pick a customer before sending.","error-no-customer-email":"This customer has no email address on file.","error-no-subject":"Add a subject before sending.","flow-channel-caption-from":"Your channel","flow-channel-caption-to":"Your channel","flow-customer-caption-from":"The customer","flow-customer-caption-to":"The customer","flow-from-label":"From","flow-from-label-lower":"from","flow-pick-channel":"Pick a channel","flow-pick-customer":"Pick a customer","flow-to-label":"To","flow-to-label-lower":"to","header-recap-empty":"Pick the customer","helper-from-customer":"We'll log the message as if the customer wrote it, then send them a short notification email so their reply threads back here.","helper-to-customer":"We'll send this as a normal email from your channel.","identity-pick-aria":"Pick which email to use","menu-from-customer-description":"Log a conversation you had over the phone.","menu-from-customer-label":"On behalf of a customer","menu-heading":"Start a new thread","menu-title":"New thread","menu-to-customer-description":"Reach out first from one of your channels.","menu-to-customer-label":"New thread to customer","mode-from-customer":"From customer","mode-to-customer":"To customer","send-from-customer":"Log thread","send-to-customer":"Send to customer","sending":"Sending...","shell-trigger-aria":"Start a new thread","stub-not-ready-body":"The composer works, but the backend procedure that synthesizes the inbound message and dispatches the notification email is being built. Try the \"To customer\" mode in the meantime.","stub-not-ready-title":"On-behalf-of sending isn't wired up yet","subject-aria":"Thread title","subject-placeholder":"Subject (optional)","subject-placeholder-required":"Thread title","swap-aria":"Swap sender and receiver","swap-tooltip":"Swap direction","switch-customer":"Pick a different customer","title-placeholder":"Thread title"},"roles":{"badge":{"built-in":"Built-in","custom":"Custom","owner":"Owner"},"base-tier-description":"New permissions start from this tier's defaults.","base-tier-label":"Base tier","base-tier-readonly-hint":"Built-in tiers always grant their default permissions as a baseline.","base-tier":{"admin":"Admin","member":"Member"},"built-in-cannot-delete-hint":"Built-in roles can't be deleted. Reset one to its default instead.","built-in-section":"Built-in roles","cancel":"Cancel","create":"Create role","create-dialog":{"description":"Name it and pick a starting point. You'll fine-tune permissions next.","description-label":"Description","description-placeholder":"What this role is for","name-label":"Role name","name-placeholder":"Support agent","submit":"Create role","title":"Create a role"},"custom-section":"Custom roles","delete":"Delete","delete-dialog":{"confirm":"Delete role","description":"This permanently deletes the role. This can't be undone.","title":"Delete role?"},"detail":{"go-back":"Back to roles","not-found":"This role no longer exists."},"duplicate":"Duplicate","duplicate-dialog":{"description":"Create a copy of this role that you can edit independently.","name-label":"New role name","name-placeholder":"Copy of role","submit":"Duplicate role","title":"Duplicate role"},"edit":"Edit role","edit-dialog":{"description":"Update this role's name, description, and permissions.","submit":"Save changes","title":"Edit role"},"editor":{"base-tier-fixed":"Base tier","description-label":"Description","description-placeholder":"What this role is for","group-count":"{on} of {total}","name-label":"Role name","name-placeholder":"Support agent","permissions-heading":"Permissions","select-all":"Select all","selected-count":"{count} selected","tier-hint":{"admin":"Admin default","member":"Member default","owner":"Owner only"}},"empty-custom-description":"Create a custom role to give members a tailored set of permissions.","empty-custom-title":"No custom roles yet","full-access":"Full access","loading":"Loading roles...","member-count":"No members | {count} member | {count} members","new-role":"New role","owner-read-only-hint":"The owner role always has full access and can't be edited.","permission-count":"{count} of {total} permissions","preset":{"blank":"Blank","blank-description":"Start with the base tier and add permissions yourself.","label":"Start from a preset","permission-count":"{count} permission | {count} permissions","read-only":"Read only","read-only-description":"Can view conversations and content without making changes.","supervisor":"Supervisor","supervisor-description":"Manages the inbox, members, and team settings.","support-agent":"Support agent","support-agent-description":"Handles conversations without admin access."},"read-only-badge":"Read only","reassign-dialog":{"confirm":"Reassign and delete","description":"This role is assigned to members. Choose where to move them before deleting it.","target-builtin":"Their base tier","target-label":"Move members to","target-placeholder":"Pick a role","title":"Reassign members"},"reset":"Reset to default","reset-dialog":{"confirm":"Reset to default","description":"This restores the role's permissions to the built-in default. Any changes you made will be lost.","title":"Reset to default?"},"role-name":{"admin":"Admin","member":"Member","owner":"Owner"},"save":"Save changes","subtitle":"Control what each role can do in this workspace.","title":"Roles and permissions","toast":{"create-failed":"Couldn't create the role. Please try again.","delete-failed":"Couldn't delete the role. Please try again.","duplicate-failed":"Couldn't duplicate the role. Please try again.","reset-failed":"Couldn't reset the role. Please try again.","update-failed":"Couldn't save the role. Please try again."},"welcome":{"create-role":"Create your first custom role","step-1-description":"Pick a starting point like Support agent or Read only, instead of toggling every permission yourself.","step-1-title":"Start from a preset","step-2-description":"Switch individual permissions on or off across nine areas, from threads to billing.","step-2-title":"Fine-tune permissions","step-3-description":"Give people the role from the Members page to grant exactly that access.","step-3-title":"Assign it to members","title":"It's easy to tailor access with custom roles","wizard-hint":"Built-in roles cover most teams. Add a custom one when you need something in between."}},"setup-checklist":{"all-set":"All set","all-set-body":"Everything from the checklist is in place.","all-set-title":"{workspace} is all set","close":"Close","done":"Done","done-count":"{done} of {total}","done-count-long":"{done} of {total} done","tasks":{"account":"Create your account","ai":"Choose how your AI works","branding":"Add your logo and brand color","channel":"Connect a support channel","channel-hint":"Live chat, email, Telegram or WhatsApp.","team":"Invite your team","team-hint":"Share the inbox with your teammates.","website":"Add your website","website-hint":"Your AI reads it to answer customers."},"title":"Finish setting up"},"sidebar":{"account":"Account","add-workspace":"Add workspace","agents":"Agents","agents-new":"New agent","agents-show-all":"Show all","announcements":"What's new","automations":"Skills","close-panel":"Close side panel","complimentary-plan":"Complimentary plan","customers":"Customers","feature-wall":"Feature Wall","help":"Help","help-unavailable":"Help chat is not available right now. Try again in a moment.","inbox":"Inbox","insights":"Insights","keyboard-shortcuts":"Keyboard shortcuts","knowledge":"Knowledge Sources","members":"Members","open-panel":"Open side panel","platform":"Platform","settings":"Settings","switch-workspace":"Switch workspace","upgrade-to-plan":"Upgrade to {plan}","workspaces":"Workspaces"},"teams":{"actions":{"archive-team":"Archive team","delete-team":"Delete team","edit-team":"Edit team","manage-members":"Manage members","restore-team":"Restore team"},"archive-dialog":{"confirm":"Archive Team","description":"This will archive the team and remove all member associations. You can restore it later.","member-count":"{count} member | {count} members","remove-members":"Also remove everyone from this team","summary":"Hide this team from active lists. You can restore it later.","title":"Archive Team"},"assignment":{"description":"Rules send the thread to this team. This setting picks the person.","no-members-in-team":"Add members to this team to use this.","notify-description":"Who hears about a thread handed to this team while nobody has taken it.","notify-everyone":"Everyone in the team","notify-nobody-until-taken":"Nobody until someone takes it","notify-specific-person":"One person","notify-title":"Who is told","no-members-picked":"Add members in the previous step to use this.","option":{"manual":{"hint":"Everyone is notified. First to pick it up takes it.","title":"Anyone on the team"},"round-robin":{"hint":"Goes to the next member online, or stays with the team.","title":"Round robin"},"specific-person":{"hint":"Always this person, even when away.","title":"One person"}},"person-label":"Person","person-placeholder":"Pick a person","title":"Who gets the thread"},"card":{"edit":"Edit","manage":"Manage","members":"{count} member | {count} members"},"create-dialog":{"color-label":"Color","description":"Add a new team to organize your workspace members.","description-label":"Description","description-placeholder":"What does this team do?","name-label":"Team name","name-placeholder":"e.g. Support Team","title":"Create New Team"},"create-team":"Create Team","delete-dialog":{"confirm":"Delete Team","description":"This action cannot be undone. The team and all its data will be permanently deleted.","members":"members","title":"Delete Team","warning":"This will permanently delete the team and all member associations. This action cannot be undone."},"description":"Organize your workspace members into teams.","edit-dialog":{"color-label":"Color","description":"Update the team name and description.","description-label":"Description","description-placeholder":"What does this team do?","name-label":"Team name","name-placeholder":"e.g. Support Team","title":"Edit Team"},"empty":{"description":"Create teams to organize your workspace members.","title":"No Teams Yet","view-only-description":"No teams have been created in this workspace yet."},"errors":{"name-required":"Name the team.","name-taken":"A team with this name already exists.","notify-person-required":"Pick the person to tell.","person-required":"Pick the person who gets these threads."},"members-dialog":{"description":"Add or remove members from this team.","done":"Done","no-available":"No members available to add","no-members":"No members in this team yet.","select-member":"Select member to add","team-members":"Team Members","title":"Members of {name}"},"show-archived":"Show archived","status":{"active":"Active","archived":"Archived"},"title":"Teams","toast":{"archive-error":"Failed to archive team","create-error":"Failed to create team","delete-error":"Failed to delete team","restore-error":"Failed to restore team","update-error":"Failed to update team"},"welcome":{"create-team":"Create your first team","step-1-description":"Give it a name and a color, like Support, Sales, or Billing.","step-1-title":"Create a team","step-2-description":"Pick who belongs to it. People can be in more than one team.","step-2-title":"Add members","step-3-description":"Route threads to a team so the right people pick them up.","step-3-title":"Assign conversations","title":"It's easy to organize members into teams","wizard-hint":"Takes less than a minute. You can rename or reshuffle teams anytime."},"wizard":{"create":"Create team","details":{"color-label":"Color","color-option":"Color {number}","description":"Pick a name and a color your agents will recognize.","description-label":"Description","description-placeholder":"What does this team do?","name-label":"Team name","name-placeholder":"e.g. Billing","title":"Name the team"},"done":{"description":"Send threads to this team from a rule, or pick it on a thread.","finish":"Done","title":"{name} is ready"},"members":{"description":"Members are optional. You can add people later.","empty":"No members match that search.","none":"This workspace has no active members yet.","removed-members-error":"Some people are no longer in this workspace. Review the list and continue.","search-placeholder":"Search members","selected":"{count} selected","title":"Add members"},"step":{"assignment":"Who gets it","details":"Details","done":"Done","members":"Members"},"title":"New team"}},"tracker":{"broadcast":{"adapt-help":"What Adapt does","adapt-label":"Adapt","adapt-tooltip":"{agent} rewrites this update to fit each conversation: greeting the customer by name, referencing what they reported, and writing in their language. Every fact, commitment, and timeline stays exactly as you wrote it.","banner-adapt-off":"Everyone gets this exact message, word for word.","banner-adapt-on":"{agent} adapts the wording to each conversation. The meaning stays exactly yours.","banner-title-plural":"Broadcast to {count} linked thread | Broadcast to {count} linked threads","empty-body-error":"Write a message before broadcasting.","mode-label":"Broadcast","record-title-plural":"Broadcast to {count} linked thread | Broadcast to {count} linked threads","retry":"Retry","review-before-send":"Review before sending","send-error":"Could not send the broadcast. Please try again.","show-less":"Show less","show-more":"Show {count} more","skip-customer-blocked":"Customer blocked","skip-no-customer-channel":"No reachable channel","skip-suppressed":"Email suppressed","skip-thread-has-no-customer":"No customer on thread","skip-thread-resolved":"Thread resolved","skip-window-closed":"WhatsApp window closed","skipped-count":"{count} resolved thread skipped | {count} resolved threads skipped","state-adapting":"Adapting","state-failed":"Failed","state-pending":"Pending","state-retrying":"Retrying","state-seen":"Seen","state-sending":"Sending","state-sent":"Sent","state-skipped":"Skipped","summary-adapting":"{agent} is adapting…","summary-all-sent":"All {total} sent","summary-partial":"{sent} of {total} sent, {failed} failed","summary-progress":"{sent} of {total} sent","summary-review":"Review the variants before sending","tracker-update-chip":"Tracker update"},"create":{"add-threads":"Add threads","add-threads-hint":"the threads this incident covers","auto-add-hint":"Let AI link new threads about this as they arrive.","auto-add-title":"Auto-add matching threads","cancel":"Cancel","channel":{"api":"api","chat":"chat","email":"email","slack":"slack","telegram":"telegram","whatsapp":"whatsapp"},"cta-add-thread":"Add a thread to create","cta-create":"Create tracker · {count}","cta-name-it":"Name it to create","empty-subtitle":"This tracker is internal only. Pick the threads it covers below, then create.","empty-title":"Track an incident across many threads","error-generic":"Couldn't create the tracker. Try again.","internal-reassurance":"Customers never see this tracker","menu-description":"Group related threads under one incident.","menu-help-aria":"What is a tracker?","menu-label":"New tracker","name-hint":"Give this incident a name everyone will recognize.","picker-description":"Pick the threads this incident covers.","picker-done":"Done","preview-empty":"No preview","selected-suffix":"selected","selected-title":"{count} thread in this incident | {count} threads in this incident","selection-cap":"Up to {max} threads at a time","selector-empty":"No threads to add yet.","selector-empty-search":"No threads match \"{query}\".","selector-placeholder":"Search threads...","selector-search-aria":"Search threads to add","stage-aria":"Set tracker stage","suggest":"Suggest \"{title}\"","title":"New tracker","title-aria":"Tracker title","title-placeholder":"Login isn't working"},"feed":{"link":"Link","linked-a-thread":"Linked a thread","open-thread":"Open {thread}","relinked":"Linked again","unlink-confirm":"Unlink this thread?","unlink-description":"The thread stays in the inbox. It only leaves this tracker.","unlinked":"Unlinked","unlinked-a-thread":"Unlinked a thread"},"internal":"Internal","stage":{"identified":"Identified","investigating":"Investigating","monitoring":"Monitoring","resolved":"Resolved"},"view":{"add-agent":"Add agent","add-agent-error":"Couldn't add the agent. Try again.","add-agent-label":"Add a teammate or AI agent","add-agent-success":"Added to the tracker","add-threads":"Add threads","add-threads-description":"Group existing support threads under this tracker.","add-threads-error":"Couldn't add the threads. Try again.","affected-open":"still affected","affected-recovered":"recovered","affected-title":"Affected customers","affected-total":"total grouped","ai-tag":"AI","auto-add-error":"Couldn't update auto-add. Try again.","auto-add-hint":"AI is watching for new threads about this topic.","auto-add-title":"Auto-add","badge":"Tracker","composer-hint":"Internal only","composer-placeholder":"Write an internal note...","drawer-title":"Tracker details","kicker":"Tracker Thread","linked-count":"{count} linked thread · internal | {count} linked threads · internal","linked-empty":"No threads linked yet.","linked-load-more":"Load more","linked-title":"Linked threads","member-open":"Still affected","member-recovered":"Recovered","member-unknown":"Visitor","note-error":"Couldn't post the note. Try again.","overview-title":"Overview","post":"Post","preview-empty":"No preview","resolve":"Resolve incident","resolve-cancel":"Cancel","resolve-cascade":"Also resolve the {count} open thread | Also resolve the {count} open threads","resolve-cascade-hint":"Each resolves like a normal reply","resolve-cascade-label":"Also resolve the {count} still-open thread | Also resolve the {count} still-open threads","resolve-choice-description":"The threads linked to this incident stay open unless you resolve them too.","resolve-confirm":"Resolve","resolve-description":"This marks the incident resolved. The linked threads stay open on their own.","resolve-description-none":"This marks the incident resolved.","resolve-error":"Couldn't resolve the tracker. Try again.","resolve-only":"Resolve tracker only","resolve-only-hint":"The {count} linked thread stays open | The {count} linked threads stay open","resolve-title":"Resolve this tracker?","stage-error":"Couldn't change the stage. Try again.","stage-label":"Stage","team-hint":"Add a teammate or AI agent to watch this tracker.","team-title":"On this tracker","unlink":"Unlink","unlink-error":"Couldn't unlink the thread. Try again."}},"welcome":{"loading":{"agents":"Setting up your AI Agents...","letsgo":"Let's go!","polish":"Polishing the pixels...","setup":"Setting up your workspace...","workflows":"Customizing your workflows…"},"subtitle":"Your workspace is ready","title":"Welcome to Gruvi!","title-with-name":"Welcome to Gruvi, {name}!"}},"workspaces":{"reactivate":"Reactivate","reactivate-dialog":{"confirm-prompt":"Type the following to confirm:","description":"This will restore access for all members and make the workspace active again.","title":"Reactivate Workspace"},"reactivate-error":"Failed to reactivate workspace. Please try again."}}}