Javier Martinez's Work | ContraWork by Javier MartinezJavier Martinez
24/7 AI Automation | Receptionist + Sales + Workflows
I built my own lead generation machine because I moved to Denmark with zero network.
I moved to Denmark.
I didn't know anyone.
I had no network.
And I needed to find companies I could sell automation services to.
I could spend hours manually searching for companies, finding emails, cleaning data, and sending messages one by one.
Or I could automate the process.
So I built a complete lead generation pipeline:
β π Python scraper connected to Denmark's public government CVR database
β π Google Sheets synchronization to normalize and deduplicate companies
β βοΈ Automated cold email workflow with 10 sector-specific templates using n8n
β π± Daily Telegram reports with full pipeline statistics
β πΌ Assisted LinkedIn outreach: 10 leads per day + a ready-to-send message
And these are the numbers:
π 19,334 leads in the database
π§ 71% email coverage
π 10 sectors
π’ 34 industry codes
βοΈ 25 automated emails per day
βΎοΈ ~534 days of outreach without repeating a lead
π° $5/month total cost β basically just the VPS.
The interesting part isn't the scraper.
It's not n8n.
It's not Telegram.
The interesting part is that a process that used to take hours of manual work can now run almost entirely on its own.
And that's exactly what I want to build for companies:
Find repetitive processes β design the system β automate them β measure the results.
In the video, I break down the entire pipeline, piece by piece.
If you're building something similar, let me know which part you'd like me to break down next. π
#Automation #AI #LeadGeneration #n8n #Python #ColdEmail #SalesAutomation #B2BAutomation #Denmark #BuildInPublic How to replace a $2,000/mo manual reporting task with a $3/mo AI workflow. β‘οΈ
Here is a look under the hood of our automated CEO Daily Briefing system:
β’ Orchestration: n8n scheduled trigger at 08:00 AM.
β’ Data Sources: Google Sheets (Parallel execution) + Industry RSS feeds.
β’ AI Layer: GPT-4o mini analyzing metrics and writing executive insights (< $0.01 per run).
β’ Delivery: Formatted Telegram notification. Building custom AI architectures that actually scale. π»β‘οΈ
Here is a peek under the hood of a production-ready AI system:
β’ Terminal: Claude Code as the primary engine.
β’ Harness: Gentleman AI for memory persistence (Engram) and spec-driven development (SDD).
β’ Automation Server: Self-hosted n8n running on a dedicated Hostinger VPS. Built a full AI consulting business system β from website to outreach machine.
For a boutique AI consulting firm targeting mid-market companies in the US and Europe, I designed and shipped the full technical
stack:
Production website (React + TypeScript + Express)
Not just a landing page. A conversion machine: lazy-loaded routes, per-page SEO metadata, structured data for Google, a sitemap, an
OG image for social sharing, and Lighthouse-ready performance fixes (including a Framer Motion LCP bug that was silently tanking
search rankings).
AI Diagnostic Tool
A multi-step lead qualification form that calls Claude under the hood, generates a personalized automation ROI report for each
prospect, and delivers it at a unique URL β with prompt injection protection baked in (XML-delimited user inputs, system prompt
hardening).
Security layer
CSP headers, correct trust-proxy config for a Cloudflare + Railway dual-hop topology, hardened email notification logic, and temp
file cleanup that survives errors. Production-grade, not tutorial-grade.
LinkedIn prospecting engine
A Python + Playwright scraper that:
Rotates across 10 industry niches
Qualifies leads by title, location, and post recency
Auto-generates personalized connect requests (β€300 chars) and follow-ups via Anthropic API
Exports to Excel, deduplicates across runs
Currently targeting Property Management decision-makers in Florida & Texas
This is what "full-stack AI consulting infrastructure" actually looks like in practice.
What was built
A production-ready AI consulting business stack, covering six layers end to end.
On the frontend, a React SPA with TypeScript, lazy-loaded routes, per-page SEO metadata via react-helmet-async, and full
internationalization in English, Spanish, and Danish.
The SEO layer included a sitemap, robots.txt, JSON-LD structured data schemas for Google, a custom OG image at 1200Γ630px for
social sharing, and a performance fix for a Framer Motion bug that was silently blocking the page's Largest Contentful Paint β
meaning Google couldn't properly index the main headline.
The backend is an Express + TypeScript API deployed on Railway, hardened with Content Security Policy headers, correct trust proxy
configuration for a Cloudflare + Railway dual-hop topology, and proper temp file cleanup that survives errors.
The AI feature is a multi-step diagnostic form that sends the prospect's business data to Claude, generates a personalized
automation ROI report, and delivers it at a unique shareable URL β with prompt injection protection built in so user-submitted text
can never hijack the LLM's instructions.
On the security side, all user-controlled fields are wrapped in XML delimiters in the prompt, environment variable handling was
hardened to eliminate silent fallbacks, and no sensitive data leaks through error paths.
Finally, the outreach system is a Python + Playwright scraper that rotates across industry niches, qualifies leads by title,
location, and post recency, then uses the Anthropic API to generate personalized LinkedIn connect requests and follow-up messages
for each lead β exporting everything to Excel with deduplication across runs.
Key technical problems solved
LCP blocked by Framer Motion: opacity:0 on H1 prevented Google from indexing the headline. Fixed by rendering plain HTML on first paint.
Prompt injection risk: All user-submitted fields wrapped in XML delimiters + system prompt instruction to treat them as data, not commands.
Dual-hop proxy misconfiguration: trust proxy: 1 was wrong for a Cloudflare β Railway topology. Corrected to 2 to get real client IPs in logs and rate limiting.
Location-aware lead qualification: Scraper's filter system refactored to support per-niche target_locations, enabling pivot from Danish to US markets without touching core logic.