On This Page
- 2026-10-18 refresh
- The Core Insight: Be Everywhere, Not Just #1
- System Architecture
- Database Design
- Keyword Landscape: 9.8M Monthly Searches
- Real Visibility Data
- Scoring Opportunities With Jev
- Brand Mention Detection
- Outreach Pipeline: 3,964 Prospects
- The Tooling: MCP-Powered Automation
- Lessons Learned (So Far)
- What’s Next: 90-Day Targets
- Try It Yourself
On 18 October 2026 we re-checked 197 keywords and found tajo.io on four of them, all searches for its own name. Tajo’s mean visibility was 0.13%. The baseline we measure it against is 11.31%.
That gap is why this system exists. The integrated marketing SEO/content execution play makes a brand appear on many of the pages that rank for a query, instead of trying to rank one owned page at #1. The question behind it is simple: what if your brand appeared on every page in the top 10 results?
Our baseline for what the play can do: 50% program-influenced mentions within 6 months of tracking 600+ keywords. We built a full-stack automation system around it and run it on 3,222 keywords in 31 languages.
This post is the technical breakdown: architecture, tooling, database design, and the data we are seeing. The charts are drawn from the same database.
2026-10-18 refresh
On 18 October 2026 we re-checked 197 of the 284 stored queries in two passes, including 181 of the 217 target keywords. 316 of the 520 search requests came back empty, so the other 87 queries keep their 3 October results.
- Google re-indexed the homepage. For “tajo.io”, tajo.io is #1 in the US and France and now shows the homepage’s new title. On 3 October it still showed the old title.
- One new brand ranking. tajo.io entered the top 20 for “tajo app”: #15 in the US and #14 in France.
- Still absent for “tajo” in all 7 markets checked. The river holds the knowledge panel in the US, Spain, Germany and France, and a restaurant ranks first in Italy.
- Non-brand: 0 of 182. tajo.io is not in the results for any of the 182 refreshed category and target queries, the same as on 3 October.
- Visibility. Tajo is visible on 4 of the 197 refreshed keywords, with a mean score of 0.13. The baseline is visible on 101, with a mean of 11.31.
Demand for the terms that describe Tajo, measured for the first time (US monthly volume and keyword difficulty):
| Term | US volume/mo | KD |
|---|---|---|
| mcp server | 34,000 | 68 |
| ipaas | 9,500 | 32 |
| what is an mcp server | 6,300 | 42 |
| zapier alternatives | 2,200 | 8 |
| mcp ui | 1,100 | 0 |
| n8n alternatives | 1,100 | 4 |
| reverse etl | 1,000 | 12 |
On 3 October these terms had no measured volume, and 100 searches a month was assumed for each.
Many stored volumes were wrong. A fresh measurement of 451 country and keyword pairs replaced the stored volume and difficulty, and the old values are kept in keyword_metric_snapshots. The non-English numbers held up worst. “integração shopify” (Brazil) gets 50 searches a month, not the stored 1,200. “integraciones zapier” (Mexico) and “integration zapier” (France) have no measurable volume at all. We recomputed the opportunity ranking with the real volumes and left Jev’s answers unchanged. 17 items fell to zero and dropped out, which leaves 533. The new top five:
| Rank | Opportunity | Market | Volume | Fresh check |
|---|---|---|---|---|
| 1 | tienda nube integracion | Argentina | 500 | Not confirmed: no fresh row, so this is the old stored value |
| 2 | mercado libre integracion | Argentina | 700 | Not confirmed: no fresh row, so this is the old stored value |
| 3 | integraciones zapier | Mexico, Argentina | 380 | Not confirmed: the head term is 0, and the 380 is an older stored variant |
| 4 | sincronizar contactos | Spain, Mexico, Argentina | 730 | Partly: 150 confirmed in Spain, 580 from two older stored variants |
| 5 | zapier integration | Germany | 150 | Confirmed |
Only the fifth rests entirely on a freshly measured number.
The Core Insight: Be Everywhere, Not Just #1
Think about how you actually discover products. You search “best email marketing software,” and you see 10 results. You click 3-4 of them. If one brand appears in every single article you read, that brand wins, even if it never ranked #1 itself.
“The more frequently someone hears about your product from multiple sources, the more likely they are to buy your product.”
This is the integrated marketing SEO/content execution effect. Like a cocktail party where everyone recommends the same book.
The Math Behind It
Visibility Score, the simplest metric:
Visibility Score % = (mentions in top 20 ÷ 20) × 100If your brand appears on 8 of the top 20 results for “best CRM software,” your visibility score is 40%.
Position-Weighted Visibility, because position 1 matters more than position 20:
Weighted Score = Σ(Position Weight where mentioned) / Σ(All Position Weights) × 100
Position Weights: #1 = 20pts, #2 = 19pts, ... #20 = 1pt (total 210)Opportunity Score, where to focus your effort:
Opportunity = (100% - Visibility Score) × Monthly Search VolumeA keyword with 35,000 monthly searches and 5% visibility = opportunity score of 33,250. That’s where you pitch first.
System Architecture
Here’s the full stack we built to automate the integrated marketing SEO/content execution workflow:
Technology Stack
| Layer | Technology | Purpose |
|---|---|---|
| Database | PostgreSQL | 14 tables, 30,202 records |
| Scripts | Python 3.12 | 4 core automation scripts (~2,000 LOC) |
| Search-result data | Keyword-data API + web scraping | Keyword metrics + live result scraping |
| Content Scraping | Web scraping MCP | Page content extraction for mention detection |
| Visibility Engine | Custom Python | 3 scoring methods with position weighting |
| Orchestration | AI agents + MCP | AI-assisted analysis and execution |
The Pipeline
-
Keyword Research (keyword_research.py)
-
SERP Analyzer
- Top 20 per KW
- serp_analyzer.py
-
Mention Checker
- Scrape + Match
- mention_checker.py
-
Visibility Calculator
- visibility_calculator.py
-
Opportunity Scoring
- Gap Analysis
-
Outreach Pipeline (3,964 targets)
Database Design
Our PostgreSQL database has 14 tables tracking everything from raw keywords to outreach prospect status. Here’s the data we’re working with:
Records in the nine largest tables
Values
| Table | Records |
|---|---|
| serp_results | 8,921 |
| brand_mentions | 8,902 |
| outreach_prospects | 3,964 |
| keywords | 3,222 |
| visibility_scores | 1,816 |
| google_ads_keywords | 1,593 |
| keyword_metric_snapshots | 850 |
| seo_content_plan | 585 |
| keyword_volume_history | 238 |
Core Tables
| Table | Records | Purpose |
|---|---|---|
keywords | 3,222 | Target keywords with volume, difficulty, silo |
serp_results | 8,921 | SERP positions and ranking URLs |
brand_mentions | 8,902 | Brand mention tracking per URL |
visibility_scores | 1,816 | Calculated visibility over time |
outreach_prospects | 3,964 | Link building opportunities |
seo_content_plan | 585 | Content planning with status |
google_ads_keywords | 1,593 | Google Ads keyword performance: CPC, impressions, conversions |
keyword_volume_history | 238 | Volume trend tracking |
keyword_metric_snapshots | 850 | Dated volume and difficulty snapshots, old values kept |
Schema Highlights
The keywords table supports multi-country, multi-language tracking:
CREATE TABLE keywords ( id SERIAL PRIMARY KEY, keyword VARCHAR(500) NOT NULL, silo VARCHAR(100), -- Content silo grouping volume INTEGER, -- Monthly search volume difficulty INTEGER, -- Keyword difficulty (0-100) cpc NUMERIC(10,2), -- Cost per click search_intent VARCHAR(50), -- informational, commercial, transactional country VARCHAR(5), -- us, de, fr, etc. language VARCHAR(5), -- en, de, fr, etc. UNIQUE(keyword, country, language));The visibility_scores table tracks brand visibility per keyword over time:
CREATE TABLE visibility_scores ( id SERIAL PRIMARY KEY, keyword_id INTEGER REFERENCES keywords(id), brand_name VARCHAR(100), visibility_score NUMERIC(5,2), -- 0-100% mention_count INTEGER, pages_with_mentions INTEGER, total_pages_checked INTEGER, calculated_at TIMESTAMP DEFAULT NOW());Keyword Landscape: 9.8M Monthly Searches
We’re tracking 3,222 keywords across 45 content silos, representing about 9.8 million monthly searches. Here’s the distribution:
Monthly search volume by silo
The nine largest silos, without the one-keyword Support outlier.
Values
| Silo | Monthly searches |
|---|---|
| Email Marketing · 646 keywords | 1.62M |
| CRM · 400 keywords | 1.57M |
| Business Strategy · 4 keywords | 675K |
| Marketing Strategy · 12 keywords | 435K |
| Marketing Automation · 174 keywords | 220K |
| Customer Engagement · 163 keywords | 166K |
| Messaging · 116 keywords | 138K |
| Tools · 3 keywords | 130K |
| Analytics · 10 keywords | 128K |
Top Silos by Search Volume
| Silo | Keywords | Avg Volume | Total Volume |
|---|---|---|---|
| Support | 1 | 3,010,000 | 3,010K |
| Email Marketing | 646 | 2,963 | 1,624K |
| CRM | 400 | 4,037 | 1,575K |
| Business Strategy | 4 | 168,750 | 675K |
| Marketing Strategy | 12 | 36,275 | 435K |
| Marketing Automation | 174 | 1,367 | 220K |
| Customer Engagement | 163 | 1,020 | 166K |
| Messaging | 116 | 1,263 | 138K |
| Tools | 3 | 43,333 | 130K |
| Analytics | 10 | 12,820 | 128K |
The Support row is one keyword, “help desk solutions”, measured at 3,010,000 searches a month: nearly a third of the total. Read it as an outlier, not a silo. The chart leaves it out. Average volume counts only keywords with a measured volume.
Average Keyword Difficulty: 23.6/100
That is the mean over the 2,499 keywords with a difficulty score. The sweet spot for integrated marketing SEO/content execution is keywords with difficulty 20-50 and volume above 1,000. 615 of our keywords sit there.
Real Visibility Data
This is where the strategy gets real. On the 18 October 2026 refresh of 197 keywords, Tajo’s mean visibility was 0.13%, against a baseline of 11.31%. Tajo shows up on four keywords, all searches for its own name. On the biggest keywords, the gap looks like this:
Position-weighted visibility, Tajo against the baseline
The mean over all 197 refreshed keywords, then the ten highest-volume keywords.
- Tajo
- Baseline
Values
| Keyword | Tajo | Baseline |
|---|---|---|
| Mean, 197 keywords | 0.13% | 11.31% |
| crm software · US | 0.00% | 8.57% |
| crm · US | 0.00% | 27.14% |
| whatsapp business · US | 0.00% | 0.00% |
| newsletter · US | 0.00% | 18.10% |
| email marketing campaigns · US | 0.00% | 17.62% |
| mcp server · US | 0.00% | 0.00% |
| crm system · US | 0.00% | 18.57% |
| email marketing · Italy | 0.00% | 0.00% |
| live chat · US | 0.00% | 0.00% |
| online marketing · US | 0.00% | 9.52% |
Where Tajo Is Visible (2026-10-18)
| Keyword | Market | Tajo Position | Visibility | Pages Found On |
|---|---|---|---|---|
| tajo.io | US | #1 | 9.52% | 1 of 6 checked |
| tajo.io | France | #1 | 9.52% | 1 of 15 checked |
| tajo app | France | #14 | 3.33% | 1 of 19 checked |
| tajo app | US | #15 | 2.86% | 1 of 19 checked |
Where the Biggest Opportunities Are
These are the highest-volume keywords in the 18 October refresh. Tajo is on none of them:
| Keyword | Market | Monthly Volume | Tajo | Baseline | Opportunity Score |
|---|---|---|---|---|---|
| crm software | US | 617,000 | 0% | 8.57% | 617,000 |
| crm | US | 193,000 | 0% | 27.14% | 193,000 |
| whatsapp business | US | 59,000 | 0% | 0% | 59,000 |
| newsletter | US | 49,000 | 0% | 18.10% | 49,000 |
| email marketing campaigns | US | 38,000 | 0% | 17.62% | 38,000 |
| mcp server | US | 34,000 | 0% | 0% | 34,000 |
| crm system | US | 23,000 | 0% | 18.57% | 23,000 |
| email marketing | Italy | 20,000 | 0% | 0% | 20,000 |
| live chat | US | 20,000 | 0% | 0% | 20,000 |
| online marketing | US | 20,000 | 0% | 9.52% | 20,000 |
Scoring Opportunities With Jev
The table above was wrong about us, and it took until 3 October 2026 to see it. Ranked by (100% − visibility) × volume, head terms such as “crm” at 193,000 searches a month, or “newsletter” at 69,800 in the 3 October candidate set, look like the best places to spend a week. Tajo is an agentic integration builder: reverse ETL, MCP servers and tools, and an MCP UI for building syncs between SaaS apps. A reader looking for newsletter tips is not trying to connect two tools. Volume can’t see that. A model can.
So we put Jev, TypeSafe’s typed-judgment model, between the keyword database and the to-do list. It doesn’t write anything. It answers four questions about each opportunity and returns a typed answer with a confidence for each. Code does everything else.
The four questions
Every request carries the same paragraph describing Tajo, plus the facts we hold for that item: volume, keyword difficulty, the stored top 10 with known domain ratings, how many forums and listicles sit in it, and our existing article (word count, days since update, pageviews) or the third-party page.
| Question | Levels |
|---|---|
| Fit: would a page for this lead a reader to building integrations between SaaS tools? | Score 0–3: unrelated · adjacent · same problem space · exactly what Tajo solves |
| Intent | Choice: informational · comparing tools · ready to set up · navigational |
| Winnability for a young, low-authority domain within three months, from the facts given | Score 0–4: very hard · hard · moderate · achievable · easy |
| Action | Choice: new article · update existing · localize · outreach for inclusion · forum or video answer · no action |
The formula lives in code
priority = log10(1 + volume) × fit_norm × win_norm × intent_weight
fit_norm = clamp((fit − 1) / 2, 0, 1)win_norm = (winnability + 1) / 5intent_weight = Σ P(intent) × weight (ready to set up 1.0, comparing 0.9, learning 0.6, navigational 0.3; our own brand 1.0)Volume goes in on a log scale, so a keyword ten times bigger earns one more point, not ten times the points. Adjacent fit scores zero: we don’t pay for traffic that can’t reach a sync. Winnability never hits zero, so a perfect-fit keyword stays on the list even when it is hard. Intent is weighted by Jev’s whole probability distribution, so doubt about intent shrinks the score instead of forcing a guess.
Then the gates. Any fit or winnability answer below 0.6 confidence goes to a person, not into the ranking.
| Outcome | Opportunities |
|---|---|
| Ranked | 550 |
| Sent to a human (confidence below 0.6) | 648 |
| Zeroed as adjacent or unrelated | 562 |
| Jev confidently said “no action” | 106 |
| Scored | 1,866 |
What changed
The first pass divided fit by three and let volume carry the rest. A Portuguese “best newsletters” listicle came in at number 16. Adjacent fit, 25,000 searches, and the volume did all the work. That pass contradicted the thing we sell, so the formula changed to zero out adjacent fit, and everything was scored again.
In the final run, the top ten are all integration and sync queries:
| Rank | Opportunity | Locale | Volume | Action |
|---|---|---|---|---|
| 1 | integração Shopify | pt | 1,200 | Retarget our existing Shopify integration article to the Portuguese query |
| 2–4 | Zapier integrations | es, de, fr | 550–880 | One new article, three languages |
| 5 | Tienda Nube integration | es | 500 | New article |
| 7 | contact sync | es | 980 | New article |
“newsletter” finished 543rd of 550. After the 18 October volume refresh it sits 526th of 533, and “integração Shopify” fell from 1st to 8th on its real volume of 50.
The run also turned up something no formula would have found: 97% of our localized articles still carry the English primary keyword. The Portuguese Shopify article was written in Portuguese and aimed at an English search.
What it costs
Scoring 1,866 items took 2.77 million input tokens: about eleven cents. Asking the same 19 items twice moved scores by 0.034 on average, and flipped 2 of 38 choice answers. So any two priorities within 0.1 of each other are a tie. The judgments are only as good as the facts fed in. Most of our stored search results date from February 2026 (6,802 of 8,921), and the 3 October run had none for its non-English keywords, so winnability there rested on keyword difficulty alone. The 18 October refresh added 338 results for 37 non-English keywords. Jev has not re-scored anything since.
Brand Mention Detection
Our mention checker has scanned 8,898 pages so far. The baseline brand appears on 1,248 of them (14.0% mention rate), 34,010 mentions in all. Only 215 of those pages include a link. Tajo appears on 4 pages, all on tajo.io. Pages added on 18 October were checked from the search snippet, not the full page, which undercounts.
Pages checked for mentions
Values
| Pages | Pages |
|---|---|
| Checked | 8,898 |
| Mention the baseline brand · 14.0% of checked | 1,248 |
| Mention it with a link · 17.2% of those pages | 215 |
| Mention Tajo · All on tajo.io | 4 |
The mention checker works by:
- Fetching page content via a web scraping API (handles bot detection and CAPTCHAs)
- Regex matching for brand names and aliases (case-insensitive, with context extraction)
- Link detection to determine if mentions include backlinks
- Context extraction to capture the sentence around each mention
# Simplified mention detection logicdef find_brand_mentions(content, brand_names): mentions = [] for brand in brand_names: pattern = re.compile( rf'\b{re.escape(brand)}\b', re.IGNORECASE ) for match in pattern.finditer(content): # Extract surrounding context (200 chars) start = max(0, match.start() - 100) end = min(len(content), match.end() + 100) context = content[start:end] mentions.append({ 'brand': brand, 'position': match.start(), 'context': context, 'has_link': check_for_link(content, match) }) return mentionsOutreach Pipeline: 3,964 Prospects
The outreach system identifies pages ranking for our target keywords that don’t mention the tracked brand yet. Each becomes a prospect.
Outreach prospects by type
All 3,964 are pending. None has been qualified or contacted yet.
Values
| Type | Prospects |
|---|---|
| Ranking page with no mention | 3,567 |
| Listicle or comparison page | 314 |
| Forum or video thread | 83 |
Pipeline Breakdown
| Status | Count | % |
|---|---|---|
| Pending (needs qualification) | 3,964 | 100% |
No prospect has been qualified or contacted yet: the database holds no Go or No-Go decisions.
Prospect Types
| Type | Count | Strategy |
|---|---|---|
| Ranking page with no mention | 3,567 | Inclusion request |
| Listicle or comparison page | 314 | Ask to be listed |
| Forum or video thread | 83 | Answer in the thread |
The 397 listicle, comparison, forum and video pages came from the 18 October refresh. Some are written by vendors, so they need triage before any pitch.
Content Plan Status
| Status | Count |
|---|---|
| Complete | 525 |
| Planned | 60 |
We have 585 content pieces in the plan. 525 are complete. The 60 planned pieces are 35 new articles and 25 revamps, the content engine that feeds the integrated marketing SEO/content execution machine.
The Tooling: MCP-Powered Automation
The entire system is orchestrated through Model Context Protocol (MCP) servers, allowing AI-assisted execution of every workflow step.
Keyword-data MCP
- Keyword metrics: volume, difficulty and CPC
- Related keyword discovery
- Search-result positions for any keyword
- Competitor keyword analysis
- Bulk domain metrics
Web scraping MCP
- Live search-result scraping, one keyword or a batch
- Full page content extraction, one page or a batch
Workflow: From Keyword to Outreach
Here’s a real workflow we run regularly:
Step 1: Keyword Research
python3 keyword_research.py --stats# Returns: 3,222 keywords, 45 silos, 9.8M total volumeStep 2: SERP Analysis
python3 serp_analyzer.py --keyword-id 1 --summary# Keyword 1 in the database: 7 stored results, 7 unique domainsStep 3: Mention Checking
python3 mention_checker.py --stats# Returns: 8,898 pages checked, 1,248 with the baseline brand, 34,010 mentionsStep 4: Visibility Calculation
python3 visibility_calculator.py --overall --report# 2026-10-18 refresh: Tajo 0.13%, baseline 11.31% mean visibilityLessons Learned (So Far)
1. Start with Competitor Keywords
In the “Competitor” silo, baseline visibility averages 26.8% across 166 keywords, against 24.1% across all 795 scored keywords, because comparison pages naturally mention multiple brands. “X alternatives” and “X vs Y” keywords are low-hanging fruit.
2. Review Sites Are Gold
Review and comparison sites rank for almost everything and will list you if you meet their criteria. The 173 stored results with a domain rating average DR 87.3. You can’t outrank them, but you can be on them.
3. Volume ≠ Opportunity
“crm” has 193,000 monthly US searches, and most of those readers are not trying to connect two tools. Fit to what you actually sell beats volume, which is why the opportunity score is now a Jev judgment multiplied in code, not raw volume times a gap.
4. Mention ≠ Link
Of 1,248 pages mentioning the baseline brand, only 215 include a link. That’s a 17.2% link rate. Every unlinked mention is an easy outreach win, you can ask nicely for a link since they already endorse you.
5. Multi-Language Multiplies Everything
The keyword set covers 31 languages, and six of them (EN, ES, PT, DE, FR, IT) hold 2,892 of the 3,222 keywords. Each language multiplies your opportunity surface. A keyword with 1,000 searches in English might have 500 in French and 300 in German, that’s 1,800 from one concept.
What’s Next: 90-Day Targets
| Metric | 2026-10-18 | Target |
|---|---|---|
| Keywords re-checked in the latest refresh | 197 | 200+ |
| Tajo overall visibility | 0.13% | 20%+ |
| Active outreach contacts | 0 | 50+ |
| Third-party pages mentioning Tajo | 0 | 12+ |
| Backlinks from tracked mentions of Tajo | 0 | 100+ |
Try It Yourself
The integrated marketing SEO/content execution methodology works for any brand. Here’s how to start:
- Pick 20 keywords, focus on “best X”, “X alternatives”, “X vs Y” formats
- Audit the SERPs, for each keyword, check who ranks in positions 1-20
- Check for mentions, does your brand appear on those pages?
- Calculate visibility, use the formulas above
- Prioritize by fit, not volume, score each opportunity for fit, intent and winnability, then multiply in code (the formula is above)
- Pitch the gaps, reach out to pages that rank but don’t mention you
The beauty of integrated marketing SEO/content execution is that it compounds. Every new mention improves your visibility score, and every visibility improvement makes the next mention easier to earn.
The figures in this post come from queries against our integrated marketing SEO/content execution tracking database on 18 October 2026. The charts render the same data: 3,222 keywords, 8,921 SERP results, and 3,964 outreach prospects.
Frequently Asked Questions
What is an integrated marketing SEO/content execution play?
It means getting your brand mentioned on many of the pages that rank for a query, instead of only trying to rank one page of your own at number one. The tracker behind this article holds 3,222 keywords in 31 languages and 8,921 stored search results, as of 18 October 2026.
How is visibility scored?
Each of the top 20 results for a keyword gets a weight of 21 minus its position. The weighted score is the weight earned by pages that mention the brand, divided by 210, times 100. On the 18 October 2026 refresh of 197 keywords, Tajo averaged 0.13 against a baseline of 11.31.
How are opportunities prioritized?
Jev, TypeSafe's typed-judgment model, scores each opportunity for fit, intent and winnability, and code multiplies those by log-scaled search volume. Of 1,866 items scored on 3 October 2026, 550 were ranked and 648 went to a person because Jev's confidence was below 0.6.