Ground Agents Solutions · Ecosystem
Product & infrastructure ecosystem
Last updated 2026-04-26 · Confidential
flowchart TB
subgraph PARENT["Ground Agents Solutions S.L. (parent)"]
GAS["groundagentssolutions.com
Static marketing site
(GitHub Pages / Vercel)
Holding company since 2005"]
end
subgraph USERS["End users"]
direction LR
U_MC["Club directors / coaches /
parents / players"]
U_OT["Tour organizers, schools,
youth coaches"]
U_IWT["Bachelor / hen party
groups"]
U_OPS["Juan + Aitor + Raul
(internal ops)"]
end
subgraph MC["mycantera.com — soccer club SaaS"]
direction TB
MC_Next["Next.js 16 on Vercel
PWA · Tailwind v4 · TS"]
MC_Pages["Public: /, /club/[slug],
/live/[matchId], /player/[id],
/for/[slug] proposals"]
MC_App["Auth-gated app:
squads, matches, training,
calendar, AI reports"]
MC_Sales["/sales unified CRM
MyCantera + partner outreach"]
MC_News["learn.mycantera.com
Coach AI newsletter"]
MC_Auth["Firebase Auth"]
MC_FS["Firestore
mycantera-2beb5"]
MC_Storage["Firebase Storage"]
MC_AI["Anthropic Claude API"]
MC_Stripe["Stripe
Free / Coach $29 / Club $99"]
MC_Resend["Resend
(newsletter key)"]
MC_Next --> MC_Pages
MC_Next --> MC_App
MC_Next --> MC_Sales
MC_App --> MC_Auth
MC_App --> MC_FS
MC_App --> MC_Storage
MC_App --> MC_AI
MC_App --> MC_Stripe
MC_News --> MC_Resend
MC_Sales --> MC_FS
end
subgraph OT["odisea-tours.com — tour operator marketing"]
direction TB
OT_Next["Next.js 16 on Vercel
30+ pages · blog · RSS"]
OT_Pages["Tours, audiences, destinations,
journal, /for/[slug] proposals"]
OT_GA["GA4 G-902SEZT8Z1"]
OT_DNS["DNS on Cloudflare"]
OT_Mail["MX → Hostalia
juan@odisea-tours.com"]
OT_Resend["Resend sender
juan@odisea-tours.com"]
OT_Scraper["Lead scrapers
(local Python tools)"]
OT_Next --> OT_Pages
OT_Next --> OT_GA
OT_DNS --> OT_Mail
end
subgraph OCRM["Odisea CRM — operations cockpit (active)"]
direction TB
OCRM_App["Vanilla JS SPA
repo: Gioluan/OdiseaTours
(index + app + templates)"]
OCRM_Proposal["Proposal builder
+ photos assets"]
OCRM_Templates["Email templates"]
OCRM_Seed["seed.js
(initial leads import)"]
OCRM_FB["Firebase
Auth + Firestore
own project"]
OCRM_Shortcut["Desktop launcher
Odisea Tours CRM.lnk"]
OCRM_Shortcut --> OCRM_App
OCRM_App --> OCRM_Templates
OCRM_App --> OCRM_FB
OCRM_Proposal --> OCRM_FB
OCRM_Seed --> OCRM_FB
end
subgraph IWT["iwasntthere.com — ephemeral party app"]
direction TB
IWT_Next["Next.js 16 on Vercel
PWA · Tailwind v4"]
IWT_SEO["SEO surface:
3 hubs · 25 city pages
3 comparisons · 10 posts"]
IWT_Trip["Trip app:
photos, chat, countdown,
auto-delete on expiry"]
IWT_Auth["Firebase Auth"]
IWT_FS["Firestore
(own project)"]
IWT_Storage["Firebase Storage
ephemeral photos"]
IWT_Stripe["Stripe
Party Mode
£7.99 / €8.99 / $9.99"]
IWT_Mail["Cloudflare email routing
partnerships@iwasntthere.com"]
IWT_GSC["Google Search Console"]
IWT_Next --> IWT_SEO
IWT_Next --> IWT_Trip
IWT_Trip --> IWT_Auth
IWT_Trip --> IWT_FS
IWT_Trip --> IWT_Storage
IWT_Trip --> IWT_Stripe
IWT_SEO --> IWT_GSC
end
%% parent showcases all products
GAS -. "showcases" .-> MC
GAS -. "showcases" .-> OT
GAS -. "showcases" .-> IWT
%% Users to apps
U_MC --> MC_Next
U_OT --> OT_Next
U_IWT --> IWT_Next
U_OPS --> OCRM_App
U_OPS --> MC_Sales
%% Cross-product links
MC_Pages -. "Tours module CTA" .-> OT_Next
OT_Pages -. "proposals stored in" .-> MC_FS
OT_Resend -. "send-email API" .-> MC_Sales
OT_Scraper -. "JSON import" .-> MC_Sales
OCRM_Proposal -. "share link" .-> U_OT
classDef parent fill:#1e293b,stroke:#3b82f6,color:#f1f5f9,stroke-width:2px
classDef shared fill:#fde68a,stroke:#b45309,color:#111
classDef external fill:#dbeafe,stroke:#1d4ed8,color:#111
classDef odisea fill:#dcfce7,stroke:#15803d,color:#111
class GAS parent
class MC_Sales,MC_FS shared
class MC_AI,MC_Stripe,MC_Resend,IWT_Stripe,OT_Resend,OT_GA,IWT_GSC,OT_DNS,OT_Mail,IWT_Mail external
class OCRM_App,OCRM_Proposal,OCRM_Templates,OCRM_Seed,OCRM_FB,OCRM_Shortcut odisea
Parent company
Holding entity, marketing only
Shared infra
Used by MyCantera and Odisea
Odisea CRM
Standalone vanilla JS, active
External services
Stripe, Resend, GA4, DNS, etc.
Things worth knowing
- MyCantera and Odisea share a backend. The unified CRM at
mycantera.com/saleswrites to the same Firestore (mycantera-2beb5) for both products via thesales_prospects,proposalsandodisea_proposalscollections. - Odisea CRM is the day-to-day cockpit. Standalone vanilla JS app on its own Firebase project, launched from a desktop shortcut. Proposal builder is separate from the marketing site.
- iwasntthere.com is fully isolated. Own Firebase project, own Stripe, own DNS path (Cloudflare email routing → Gmail). No shared infra with the other products.
- Resend is split. Odisea sends from
juan@odisea-tours.com(verified). MyCantera sending is gated behind Resend Pro; the newsletter has its own key onlearn.mycantera.com. - DNS quirk. odisea-tours.com DNS lives on Cloudflare even though MX points to Hostalia. Hostalia's DNS panel is a ghost zone.
- This page is hidden. noindex header, password gated, not linked from any public page.