Ground Agents Ecosystem

Internal architecture overview. Enter the access code to continue.

groundagentssolutions.com
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/sales writes to the same Firestore (mycantera-2beb5) for both products via the sales_prospects, proposals and odisea_proposals collections.
  • 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 on learn.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.