Inspiration

Paid acquisition teams often have plenty of dashboards but still depend on repeated manual judgment: check spend, reconcile platform metrics with verified revenue, compare against targets, remember what happened last time, and decide whether to hold, investigate, scale, reduce, or pause.

LearnerLoop was built to turn that repetitive judgment into a state-aware agent loop.

What it does

LearnerLoop is an autonomous growth decision agent for founders and growth teams running paid acquisition.

It combines:

  • current ad performance
  • previous performance
  • verified revenue
  • prior decisions
  • business targets

The agent then reasons over that context with Gemini 3.5 Flash, selects exactly one bounded decision such as HOLD, WATCH, INVESTIGATE, SCALE_CANDIDATE, REDUCE_CANDIDATE, or PAUSE_CANDIDATE, and calls a scoped intervention tool.

Higher-risk actions require human approval. LearnerLoop does not directly modify live ad budgets in this build.

How we built it

The agent is built with Google ADK and Gemini 3.5 Flash.

The backend runs on Google Cloud Run and exposes the LearnerLoop Agent API.

n8n handles the operational workflow around the agent:

  1. ingest performance and revenue context
  2. compare current and previous state
  3. create an ADK session
  4. call the Cloud Run agent
  5. receive a structured intervention
  6. preserve the result for audit and the next evaluation cycle

For the hackathon demo, the live campaign was paused, so we used a captured representative state to safely reproduce the same decision path.

In the demonstrated run, the agent compared verified CPA and ROAS against prior performance and targets, selected SCALE_CANDIDATE, returned 0.95 confidence, and invoked the scoped create_intervention_request tool.

Challenges we ran into

The biggest challenge was moving from a normal automation workflow to a genuinely agentic decision loop.

We had to solve:

  • persistent ADK session handling
  • Cloud Run deployment and permissions
  • passing structured state safely from n8n
  • making tool calls deterministic and bounded
  • separating recommendation from direct execution
  • reproducing the workflow safely while live campaigns were paused

We also designed the agent so risky operational actions explicitly require human approval instead of being executed automatically.

Accomplishments that we're proud of

We are proud that LearnerLoop is not just a chatbot or dashboard summary.

The working demo shows:

  • Gemini 3.5 Flash reasoning over changing operational state
  • Google ADK session and agent orchestration
  • a real tool call to create_intervention_request
  • a structured SCALE_CANDIDATE decision
  • confidence scoring
  • human-in-the-loop safety
  • a live backend running on Google Cloud Run
  • integration into an existing operational workflow through n8n

The public repository also includes the agent code, deployment instructions, sample context, and integration notes.

What we learned

The most important lesson was that useful agents need more than model intelligence.

They need:

  • state
  • memory of previous decisions
  • bounded tools
  • clear operational constraints
  • evidence-based reasoning
  • safe handoff to humans
  • an execution environment that can be reproduced and audited

We also learned that an agent becomes much more useful when it is evaluated on what action it chooses next, not only on how well it explains the current situation.

What's next for LearnerLoop

Next, we want to expand LearnerLoop from one growth decision loop into a broader operational agent system.

That includes:

  • richer multi-channel acquisition context
  • stronger verified-revenue reconciliation
  • multi-cycle decision memory
  • intervention outcome tracking
  • automated post-action evaluation
  • additional scoped tools
  • approval workflows for controlled execution

The long-term goal is a continuous operating layer that notices when business conditions change, reasons about what matters, and knows what safe action should happen next.

Built With

  • gemini-3.5-flash
  • google-adk
  • google-cloud-run
  • google-sheets
  • n8n
  • python
Share this project:

Updates

Submission history