Implisense to Google Sheets, Germany lookalikes ready
Your “lookalike research” process usually starts with good intentions, then turns into tabs, exports, half-baked filters, and a spreadsheet nobody fully trusts. By the time you’ve found 50 decent German companies, you’re already wondering if half of them even match your ICP.
This Implisense Sheets automation hits growth marketers first, because pipeline needs volume. But sales ops and founders feel it too, especially when the team argues about what “ideal” even means. The outcome is simple: a clean, CRM-ready Google Sheet of Germany lookalikes plus an ICP report you can share as-is.
Below is what the workflow does, what you’ll need, and how to adapt it so the list actually matches your segment.
How This Automation Works
See how this solves the problem:
n8n Workflow Template: Implisense to Google Sheets, Germany lookalikes ready
flowchart LR
subgraph sg0["Manual Launch Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "Manual Launch", pos: "b", h: 48 }
n1@{ icon: "mdi:swap-vertical", form: "rounded", label: "Prepare Prompt Text", pos: "b", h: 48 }
n2@{ icon: "mdi:code-braces", form: "rounded", label: "Filter English Terms", pos: "b", h: 48 }
n3@{ icon: "mdi:code-braces", form: "rounded", label: "Filter German Terms", pos: "b", h: 48 }
n4@{ icon: "mdi:code-braces", form: "rounded", label: "Extract Term Features", pos: "b", h: 48 }
n5["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/merge.svg' width='40' height='40' /></div><br/>Combine Term Digests"]
n6@{ icon: "mdi:swap-vertical", form: "rounded", label: "Run Settings", pos: "b", h: 48 }
n7@{ icon: "mdi:swap-vertical", form: "rounded", label: "Auth Headers", pos: "b", h: 48 }
n8@{ icon: "mdi:code-braces", form: "rounded", label: "Serialize Identifiers", pos: "b", h: 48 }
n9@{ icon: "mdi:swap-vertical", form: "rounded", label: "Format Serialization", pos: "b", h: 48 }
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/httprequest.dark.svg' width='40' height='40' /></div><br/>Request Lookalikes"]
n11@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Route ICP vs Lookalikes", pos: "b", h: 48 }
n12@{ icon: "mdi:swap-vertical", form: "rounded", label: "Expand Company List", pos: "b", h: 48 }
n13@{ icon: "mdi:code-braces", form: "rounded", label: "Sort Terms Desc", pos: "b", h: 48 }
n14@{ icon: "mdi:code-braces", form: "rounded", label: "Build EN Digest", pos: "b", h: 48 }
n15@{ icon: "mdi:code-braces", form: "rounded", label: "Build DE Digest", pos: "b", h: 48 }
n16@{ icon: "mdi:code-braces", form: "rounded", label: "Sort Terms Desc 2", pos: "b", h: 48 }
n17@{ icon: "mdi:robot", form: "rounded", label: "Generate ICP Narrative", pos: "b", h: 48 }
n18@{ icon: "mdi:swap-vertical", form: "rounded", label: "Store ICP Report", pos: "b", h: 48 }
n19@{ icon: "mdi:swap-vertical", form: "rounded", label: "Map CRM Fields", pos: "b", h: 48 }
n20["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Sample Company IDs"]
n9 --> n10
n1 --> n17
n13 --> n14
n16 --> n15
n5 --> n1
n7 --> n6
n6 --> n20
n12 --> n19
n8 --> n9
n3 --> n16
n2 --> n13
n0 --> n7
n10 --> n11
n15 --> n5
n14 --> n5
n11 --> n4
n11 --> n12
n17 --> n18
n4 --> n2
n4 --> n3
n20 --> n8
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n17 ai
class n11 decision
class n10 api
class n2,n3,n4,n8,n13,n14,n15,n16,n20 code
classDef customIcon fill:none,stroke:none
class n5,n10,n20 customIcon
The Challenge: Finding Germany Lookalikes Without Messy Data
Building a German lookalike list sounds straightforward until you do it more than once. You start with a few “perfect” customers, then try to find similar companies, then realize your sources disagree on names, addresses, and even industries. Next comes the cleanup: deduping, normalizing fields, and translating internal notes into something sales can use. It’s not just time. It’s the constant second-guessing, because one wrong assumption early (bad base companies, weak filters) pollutes every lead you touch afterward.
The friction compounds. Here’s where it breaks down in real teams.
- People copy company IDs from random places, so the “base set” quietly degrades and recommendations get noisier.
- You end up exporting, re-importing, then cleaning the same fields every week (name formats, locations, sizes, domains).
- Filters like region, NACE industry codes, or size class are applied inconsistently, so the list looks big but doesn’t convert.
- No one can explain why the ICP is the ICP, which means stakeholders don’t trust the targeting document.
The Fix: Implisense Lookalikes + ICP Report, Logged to Sheets
This workflow starts with a small set of base company IDs that represent your best-fit customers. It serializes those identifiers, adds your targeting filters (German regions, NACE codes, and company size classes), then sends a recommendation request to the Implisense API to fetch similar companies from official sources like the Handelsregister. If you enable “explanation mode,” it also pulls term features used in the recommendations, cleans and sorts them in both English and German, and feeds that into an OpenAI chat model to generate a readable ICP narrative. Finally, the automation maps the returned companies into consistent, CRM-ready fields and prepares outputs you can store and share. In plain terms: you get a list that’s usable, plus a story that tells your team why that list makes sense.
The workflow kicks off on demand (or from a message trigger), validates and formats your base IDs, then calls Implisense for lookalikes. After that, it splits the list into individual companies, normalizes the fields, and writes the results to Google Sheets alongside the generated ICP report.
What Changes: Before vs. After
| What This Eliminates | Impact You’ll See |
|---|---|
|
|
Real-World Impact
Say you build one German lookalike list per week for a new segment. Manually, a typical process is: about 20 minutes to collect base companies, then maybe 3 hours of research and export across sources, plus another hour cleaning fields in Sheets. With this workflow, you paste in 3–10 base IDs, run it, and wait for processing (often around 10–20 minutes). You’re mostly left with review time, not data-entry time, so you get back about 3 hours every week.
Requirements
- n8n instance (try n8n Cloud free)
- Self-hosting option if you prefer (Hostinger works well)
- Implisense API (RapidAPI) for Germany lookalike recommendations
- Google Sheets to store lists and the ICP report
- OpenAI API key (get it from your OpenAI dashboard)
Skill level: Intermediate. You’ll connect credentials and edit a few filters (regions, NACE codes, size classes) without writing real code.
Need help implementing this? Talk to an automation expert (free 15-minute consultation).
The Workflow Flow
Launch with a base set. The workflow starts when you run it manually (or pass company IDs from a trigger like Telegram or another upstream source). It checks you have enough base companies to get meaningful results.
Serialize and filter the request. Your company IDs are formatted into the structure Implisense expects, then the workflow adds your targeting constraints like German state/region codes, NACE industries, and company size classes.
Fetch lookalikes and generate an explanation. An HTTP request hits Implisense’s recommendation endpoint and returns ranked similar companies. If “explanation mode” is enabled, term features are extracted, split into English and German digests, and sent into an OpenAI chat model to write a clear ICP narrative.
Normalize for CRM and store it. The list is expanded into one row per company, mapped into consistent fields, then pushed into Google Sheets (and optionally staged for Excel/CRM imports). You end with a shareable sheet and an ICP report in the same place.
You can easily modify location filters to focus on one Bundesland, or adjust the score threshold to tighten quality. See the full implementation guide below for customization options.
Step-by-Step Implementation Guide
Step 1: Configure the Manual Trigger
Set up the entry point so you can run the workflow on demand during setup and testing.
- Add the Manual Launch node as the trigger.
- Leave all fields at their defaults, since this is a manual trigger.
- Keep Flowpast Branding as a reference-only sticky note (no configuration required).
Step 2: Connect Implisense API Access and Run Settings
Define API access and run parameters that control the size and explanation behavior for the lookalike request.
- Open Auth Headers and set x-api-key to your API key (replace
[CONFIGURE_YOUR_API_KEY]). - Open Run Settings and set explain to
false. - In Run Settings, set size to
3. - Verify the connection order: Manual Launch → Auth Headers → Run Settings.
⚠️ Common Pitfall: If you leave [CONFIGURE_YOUR_API_KEY] in Auth Headers, the API call will fail.
Step 3: Set Up Company ID Serialization
Prepare the company identifiers so they can be sent in the lookalike API request.
- In Sample Company IDs, keep the provided jsCode to output a list of
idvalues for testing. - In Serialize Identifiers, keep the function that builds
serializationfrom eachitem.json.id. - In Format Serialization, set serialization to
{{ $json.serialization.replace(/[,]/g,'","').trim() }}and enable keepOnlySet. - Confirm the flow: Run Settings → Sample Company IDs → Serialize Identifiers → Format Serialization.
Step 4: Configure the Lookalike Request and Routing
Send the lookalike request and route outputs based on the explain flag.
- In Request Lookalikes, set URL to
https://api.implisense.com/recommend?explain={{ $('Run Settings').item.json.explain }}&size={{ $('Run Settings').item.json.size }}. - In Request Lookalikes, set Request Method to
POSTand enable JSON Parameters. - Set Body Parameters JSON to
{ "baseCompanies": [ "{{ $json["serialization"].slice(0,-3) }}" ], "locationsFilter": [ { "type": "state", "code": "de-be" } ] }. - In Route ICP vs Lookalikes, set the rule to equals with leftValue
{{ $('Run Settings').item.json.explain }}and rightValuetrue. - Confirm flow: Format Serialization → Request Lookalikes → Route ICP vs Lookalikes.
Tip: With explain set to false in Run Settings, the workflow follows the lookalike branch instead of the ICP narrative branch.
Step 5: Set Up Term Processing and the AI Narrative
Extract term features, build language digests, and generate the ICP narrative with OpenAI.
- In Extract Term Features, keep the function that iterates
items[0].json.targetProfile.featuresand outputs new items; note it continues on error. - Extract Term Features outputs to both Filter English Terms and Filter German Terms in parallel.
- In Filter English Terms, keep the filter for
item.json.key === 'term.en', then use Sort Terms Desc and Build EN Digest to generate the English digest string. - In Filter German Terms, keep the filter for
item.json.key === 'term.de', then use Sort Terms Desc 2 and Build DE Digest to generate the German digest string. - Use Combine Term Digests with mode
combineand combinationModemultiplex, then map the combined output in Prepare Prompt Text with text set to{{ $json["digest"] }}. - In Generate ICP Narrative, select model
gpt-5-miniand set the user content to{{ $json.text }}; keep the system content as provided in the node. - Credential Required: Connect your openAiApi credentials in Generate ICP Narrative.
- In Store ICP Report, set icp_report to
{{ $json.output[0].content[0].text }}.
Tip: The AI branch is only reachable when Route ICP vs Lookalikes matches the explain = true condition.
Step 6: Configure Output Mapping for Lookalike Results
Expand the lookalike response and map fields into CRM-ready output.
- In Expand Company List, set fieldToSplitOut to
companies. - In Map CRM Fields, map fields exactly as follows: crmLeadScore to
{{Math.round($json.score * 100)}}, crmAccountName to{{$json.name}}, crmDomain to{{$json.url}}, crmCity to{{$json.city}}, crmZip to{{$json.zip}}, crmStreet to{{$json.street}}, crmImplisenseId to{{$json.id}}, crmProfileUrl to{{$json.profile}}, crmExplanation to{{$json.explanation}}, and crmIsActiveCompany to{{$json.active}}. - Confirm the branch flow: Route ICP vs Lookalikes → Expand Company List → Map CRM Fields.
Step 7: Test and Activate Your Workflow
Validate both the lookalike and ICP narrative branches before turning the workflow on.
- Click Execute Workflow to run from Manual Launch.
- Verify a successful lookalike run returns data into Map CRM Fields when
explainisfalse. - Set Run Settings → explain to
trueand re-run; confirm Store ICP Report receivesicp_report. - Once confirmed, switch the workflow to Active for production use.
Watch Out For
- Implisense (RapidAPI) credentials can expire or need specific permissions. If things break, check your RapidAPI subscription status and the Basic Auth token used in the “Request Lookalikes” step first.
- If you’re using Wait nodes or external processing, timings vary. Bump up the wait duration if downstream nodes fail on empty responses.
- Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.
Common Questions
Usually about an hour if you already have API access and a target Google Sheet.
Yes, but someone needs to be comfortable editing filters like region codes and NACE industries. No coding is required; it’s mostly credentials and careful configuration.
Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in OpenAI API costs and your Implisense/RapidAPI plan.
Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.
You’ll mainly tweak the request builder that sets locationsFilter, industriesFilter (NACE), and sizesFilter. You can also tighten or loosen the THRESHOLD in the “Filter & Normalize Results” logic, or increase the “size” parameter in the request URL to give Implisense more candidates. For the narrative output, swap the prompt text that feeds the OpenAI node so the ICP reads like your internal docs. If your CRM needs different columns, adjust the “Map CRM Fields” mapping so the sheet matches your import format.
Most of the time it’s an auth issue: the Basic Auth token is missing, expired, or added to the wrong HTTP request. Also check that your RapidAPI plan allows the endpoint you’re calling, and that n8n is sending headers from the “Auth Headers” configuration you set. If you changed the request shape in the builder, one typo can lead to a 400 response that looks like a “connection” failure.
If you self-host n8n, there’s no execution limit (it mainly depends on your server and API limits). In practice, this workflow usually handles a list of about 100 lookalikes per run comfortably, and you can scale by running segments separately and raising the request “size” parameter when needed.
Often, yes. This workflow has branching logic (ICP report vs lookalike list), transforms term features, and does multi-step normalization before writing to Sheets, which is where Zapier/Make can get expensive or awkward. n8n also gives you a self-hosted path, so you are not paying per tiny step forever. That said, if you only need “call API → append row to Sheet,” Zapier or Make can be quicker to set up. Talk to an automation expert if you want a second opinion on complexity vs. speed.
You don’t need more “leads.” You need a repeatable way to define the segment, pull relevant German lookalikes, and hand sales a sheet they’ll actually use. Set it up once and let the workflow do the heavy lifting.
Need Help Setting This Up?
Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.