get_followup_cadence
Determine the correct follow-up schedule for any EMEA country: day-by-day sequence, gap timing, and question style to align with local compliance and cultural norms.
Instructions
Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes |
Implementation Reference
- src/main.ts:893-906 (schema)Tool registration with inputSchema: defines the 'get_followup_cadence' tool name, description (country-specific follow-up cadence), and input schema requiring a 'country' parameter with enum values for EMEA markets.
{ name: "get_followup_cadence", description: "Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.", inputSchema: { type: "object", properties: { country: { type: "string", enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"] } }, required: ["country"] } }, - src/main.ts:1003-1017 (handler)Handler logic: extracts country arg, looks up FOLLOWUP_CADENCES data, returns JSON with pacing, sequence, and rules for that country.
case "get_followup_cadence": { const country = args?.country as string; const cadence = FOLLOWUP_CADENCES[country as keyof typeof FOLLOWUP_CADENCES]; if (!cadence) throw new Error(`Unknown country: ${country}`); return { content: [{ type: "text", text: JSON.stringify({ module: "EMEA Follow-Up Cadence", country, ...cadence }, null, 2) }] }; } - src/main.ts:544-641 (helper)Data source (FOLLOWUP_CADENCES constant): contains country-specific pacing, day-by-day sequence, and rules for each of the 7 EMEA markets.
const FOLLOWUP_CADENCES = { uk: { pacing: "Patient. 3-day gap minimum. Max 3 touches over 2 weeks.", sequence: [ { day: 0, action: "Initial cold email/LinkedIn" }, { day: 3, action: "Soft follow-up: 'Apologies for the bump'" }, { day: 7, action: "Value-add: share a relevant article or case study" }, { day: 14, action: "Breakup email: clean exit" } ], rules: [ "No follow-up before Day 3 — feels desperate", "Friday after 3pm = wait until Tuesday", "Always offer an out — 'no worries if not'" ] }, ireland: { pacing: "Relationship-paced. Lean on warm intros. 4-5 day gaps.", sequence: [ { day: 0, action: "Initial outreach with mutual connection mention" }, { day: 4, action: "Soft float-up — 'in case it got lost'" }, { day: 9, action: "Add value — local context, event reference, mutual connection update" }, { day: 16, action: "Warm breakup — 'door's open'" } ], rules: [ "Reference Dublin tech community whenever possible", "Mention real people you know in common", "Never push — Irish reputation networks remember" ] }, spain: { pacing: "Patient — multiple touches expected. 5-day gaps.", sequence: [ { day: 0, action: "Initial outreach (bilingual hola opener)" }, { day: 5, action: "Patient float-up — 'just in case'" }, { day: 11, action: "Mention in-person availability if relevant" }, { day: 18, action: "Cerrando el bucle — warm exit" } ], rules: [ "August completely dead — pause all outreach", "Avoid 2-5pm CET (siesta)", "Spanish opener (hola) shows respect even if body is English" ] }, germany: { pacing: "Formal, methodical. 4-7 day gaps. Documentation builds with each touch.", sequence: [ { day: 0, action: "Initial email with Sehr geehrte/r address + attached case study" }, { day: 5, action: "Formal follow-up — 'I am following up'" }, { day: 12, action: "Add: provide additional documentation, GDPR statement" }, { day: 21, action: "Letzter Hinweis — formal final note" } ], rules: [ "Never drop formal address until invited", "Always include Impressum / contact data", "Punctuality on follow-up timing matters" ] }, france: { pacing: "Elegant, formal-then-warming. 4-day gaps.", sequence: [ { day: 0, action: "Initial email with Bonjour + cordially formal close" }, { day: 4, action: "'Je me permets de relancer'" }, { day: 10, action: "Share intellectual hook — relevant insight, industry analysis" }, { day: 18, action: "'Bonne continuation' exit" } ], rules: [ "August dead", "Avoid Mondays and Friday afternoons", "Use 'Vous' until invited otherwise" ] }, netherlands: { pacing: "Fast and direct. 2-3 day gaps. Yes/no questions.", sequence: [ { day: 0, action: "Direct cold outreach with yes/no framing" }, { day: 3, action: "'Yes/no on the question above?'" }, { day: 7, action: "Closing thread — clean exit" } ], rules: [ "No fluff, ever", "Yes/no questions get answered", "Don't pile on — 3 touches max" ] }, nordics: { pacing: "Modest, slow. 5-7 day gaps. Long-term oriented.", sequence: [ { day: 0, action: "Reserved, modest initial note" }, { day: 6, action: "Gentle nudge with explicit out" }, { day: 14, action: "Warm exit, wishing them well" } ], rules: [ "Never email after 4-5pm local time — they will judge", "Avoid Jun-Aug almost entirely (long summer holidays)", "Modesty in claims; Nordics distrust hype" ] } }; - src/main.ts:859-959 (registration)Tool registration via ListToolsRequestSchema handler: lists 'get_followup_cadence' as one of the available tools with its schema.
tools: [ { name: "get_country_brief", description: "Get a complete country-specific buyer psychology brief including communication style, what works/kills deals, sales cycle expectations, decision makers, compliance notes, and seasonal warnings. Use this before any outreach to a specific EMEA market.", inputSchema: { type: "object", properties: { country: { type: "string", enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"], description: "EMEA country to get brief for" } }, required: ["country"] } }, { name: "get_outreach_template", description: "Get a country-specific, channel-specific outreach template (cold email, LinkedIn DM, InMail, follow-ups, breakup). Templates are calibrated to local norms — formal address for Germany, French language for France, direct yes/no for Netherlands, etc.", inputSchema: { type: "object", properties: { country: { type: "string", enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"] }, channel: { type: "string", enum: ["cold_email", "linkedin_dm", "linkedin_inmail", "follow_up_day_3", "follow_up_day_7", "breakup"] } }, required: ["country", "channel"] } }, { name: "get_followup_cadence", description: "Get the country-specific follow-up cadence with day-by-day sequence and rules. EMEA markets vary dramatically: Netherlands wants 2-day gaps with yes/no questions, Germany wants formal documented 4-7 day gaps, Nordics want 5-7 day modest pacing.", inputSchema: { type: "object", properties: { country: { type: "string", enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"] } }, required: ["country"] } }, { name: "get_compliance_check", description: "Get country-specific compliance requirements for cold outreach: GDPR framework, cold email legality, required elements (Impressum for Germany, Mentions légales for France, etc.), cookie consent rules, regulator names, fine ranges. Critical for AI agents doing autonomous outreach in EU/UK.", inputSchema: { type: "object", properties: { country: { type: "string", enum: ["uk", "ireland", "spain", "germany", "france", "netherlands", "nordics"] } }, required: ["country"] } }, { name: "get_stakeholder_map", description: "Get the multi-stakeholder navigation map for a buyer org by company stage. Shows decision maker, influencer, common blockers, average cycle, deal size range, and champion-building script. Use before starting any deal to know who you really need to convince.", inputSchema: { type: "object", properties: { company_stage: { type: "string", enum: ["early_startup", "growth_stage", "mid_market", "enterprise"] } }, required: ["company_stage"] } }, { name: "get_eor_objection_handler", description: "Handle EOR (Employer of Record) and global hiring objections with country-specific responses. Built from 3+ years selling EOR at Deel and Multiplier across EMEA. Covers: 'use contractors instead', 'not ready to commit', 'too expensive', 'we have entity', 'compliance unclear'.", inputSchema: { type: "object", properties: { eor_objection: { type: "string", enum: ["use_contractors_instead", "not_ready_to_commit", "too_expensive", "we_already_have_entity", "compliance_unclear"] } }, required: ["eor_objection"] } }, { name: "get_full_emea_pack", description: "Get the complete EMEA pack — all country briefs, all templates, all compliance requirements, stakeholder maps, and EOR handlers. Use to fine-tune your AI agent or load as system context for full EMEA capability.", inputSchema: { type: "object", properties: {}, required: [] } } ] };