An agentic microservice on GKE that integrates with Bank of Anthos via public APIs. It scans transaction history, detects recurring “leaks,” and generates clear, empathetic guidance on how to cancel or keep each service.
This project was built for the GKE Turns 10 Hackathon.
The application is designed as a cloud-native, multi-container service running on Google Kubernetes Engine.
- Cloud Platform: Google Kubernetes Engine (GKE)
- AI Model: Gemini API
- Containerization: Docker, Google Artifact Registry
- Backend: Python, FastAPI
- Frontend: React, Vite, Nginx
- Infrastructure as Code: Kubernetes YAML Manifests
I analyzed the source code of Bank of Anthos, specifically the Transaction.java model, to understand its API contract. My service uses an Adapter Pattern to transform BoA's raw transaction data (account numbers, amounts in cents) into the format our detection logic needs.
The application supports two data sources via an environment variable (SOURCE):
-
SOURCE=boa: For live integration with thetransaction-historyservice in the same GKE cluster. -
SOURCE=mock: Uses a fixture file (/backend/mock_data/boa_transactions.json) with data in the exact BoA format for a stable and reproducible demo.
This approach allows Bye Sub to be added as an enhancement to Bank of Anthos without any modifications to its core services.
You need to create .env files inside both backend and frontend folders. Examples for each are available in .env.example.
# Navigate to the backend directory
cd backend
# Create and activate a virtual environment
python -m venv venv
.\venv\Scripts\Activate.ps1
# Install dependencies
pip install -r requirements.txt
# Run the development server
uvicorn main:app --reload --port 8080API docs will be available at: http://localhost:8080/docs.
# Navigate to the frontend directory
cd frontend
# Install dependencies
npm install
# Run the development server
npm run devThe UI will be available at: http://localhost:5173.
The project includes Kubernetes manifests (backend-deployment.yaml, frontend-deployment.yaml) and Dockerfiles for both services to facilitate deployment to GKE. Secrets are managed via Kubernetes Secrets.
GET /health→ service statusPOST /detect→ accepts a list of transactions (JSON) and returns detected subscriptions
This project is licensed under the MIT License. You are free to use, modify, and distribute this project under the terms of the license.

