MeasureCamp Spain

A map of your analytics
so agents
never fly blind

The dependencies of my Google accounts, in one graph: before anything is deleted, check what breaks.

Javier Rodeiro · MeasureCamp Madrid · 24 Oct 2026

✦ Drawat the end

There’s a surprisea draw if there are many of us · write down hello@javierrodeiro.com or message me on LinkedIn

My fleet as a graph

Real accounts, containers, properties and projects, anonymised. Dots are resources and lines are dependencies. Accounts in yellow.

What breaks if I delete this?

live: lose · audit · the panel

How it works

1 · Read

Every Google account

The gws tool queries each account with its own login, read-only.

2 · Join

One graph in SQLite

All 739 dependencies are stored in a single file.

3 · Decide

What breaks and what’s unused

Fixed rules, without AI, compute impact and issues. Before a deletion is proposed, Jev 1.14 (TypeSafe) and Strands Decider 2B (local) vote; if either is unsure, a person decides.

4 · Ask

A person answers

The agent emails the list. Nothing changes until someone replies “yes”.

How it signs in to each account

Like one key per account: asked for once, tried every day, renewed when it stops working.

1 · Consent

I grant access once

Google asks “let this app read your account?”. I say yes, read-only. gws, Google’s own tool, does it.

2 · Key

One key per account is stored

Encrypted, in a folder that belongs to that account only. The database never sees it.

3 · Daily check

Every day it tries the key

It makes one tiny read. If it works, fine. If not, the account is flagged for renewal.

4 · Renew

If it expires, it asks again

A script repeats step 1. If Google asks for the password, it stops and I step in.

Tip: with the Google app in “testing” mode, keys expire after 7 days. In “production”, they last.

How approval works

From: agent · To: me[agents] addocu: 14 findings need your call
Reply one per line: <number> yes (go ahead)
or <number> no (leave it). Lines you skip stay open.

1  [cleanup] paused tag: Meta Pixel
3  [cleanup, GTM draft if yes] tag with no trigger: Hotjar
5  [cleanup, GTM draft if yes] unused variable: Old UA ID
7  [access-risk] only one account: Hotel Ría
…  10 more
Reply
3 yes
5 no
  • 3 the deletion is prepared in GTM, not published
  • 5 is left as it is
  • the rest stays open

Excerpt of the email the system sends, with demo data.

Repos and tools

My repos

addocu-fleet
The framework: graph, panel and login management. It will be released as open source.

The whole fleet on one screen

  1. A former intern’s personal Gmail
  2. How much depends on each account
  3. Expired login: it can’t be read

Panel with demo data.

Graph panel: the former intern’s account and the accounts ranked by what they hold up123

Lose that account and 12 resources break

  1. 12 resources depend on it
  2. In red, the reach of the impact
  3. The only access to GA4, GTM and the website
  4. Direct dependants first
The former intern’s account selected: everything that goes down with it, in red1234

15 issues, by severity

  1. The 3 critical ones come from the same Gmail
  2. GA4 stopped receiving events
  3. Each finding, with its node
Audit table sorted by severity123

Recorded demo

What does “unused” mean?

That is why the system never publishes: it prepares the deletion in a separate workspace, only in approved containers and only after a “yes”.

Two reviewers, unanimity

Two AI models answer “is it safe to delete?” separately, given the name, the type and 14 days of traffic. If either doubts (risky, or confidence below 0.64), a person decides.

Proposed deletionJev 1.14 (TypeSafe)Strands 2B (local)
45 unused variables test containersafe 0.84–0,99safe 0.86–0,91
1 trigger with no tag test containersafe 0.98safe 0.89

Real result, 24 October: 46 out of 46 unanimous. Live sites never even reach the vote: a person always decides.

By the numbers

739relations
115findings

Real data from my fleet, 24 October 2026.

Next steps

Would you delete something in your accounts because an agent suggested it?

Two-minute survey: what takes most of your time? Orphaned resources, switching accounts between clients, access, BigQuery, unexplained changes.

scan the QR · thank you

The surprise

InstinctLinkedIn Premium

To claim it: hello@javierrodeiro.com or a LinkedIn message (Javier Rodeiro). A draw, if there are many of us.

En español