Inspiration
These are pain points that I experience so far working as data analyst :
Business team requests mini mini tasks to analyze BigQuery data. The requests are also diverse, e.g. filter data to these conditions a b c, provide metrics x y z with dimension m n o. Usually Business team by company policy doesn't have access to BigQuery, with logical reason that Business team doesn't have role to maintain data pipeline. Even if they are given access, they don't want to do SQL coding.
In significant time, beside Looker, the dashboard platform is Google Sheet. Many tasks I identify are "repetitive Google Sheet operations", e.g. make pivot table from Data Connectors then apply filters, select dimensions and metrics, compare with other datasets, apply formulas, then provide final table. These tasks could be automated by agent.
What it does
With Oudrie, here are processes done to tackle those problems above :
The user especially non-technical users (e.g. Business team, Product team) make task list in this tab "Task". The task is detailed by multi steps from start until end and ensure it reach user's objective. For example : [a] clean google sheet , [b] read the external data, [c] filter original dataset to x, [c] compare the sales between result point c and result point b, provide table with column : commodity, total sales in external data, total sales in original dataset, total sales difference.
The user turn on the automation (Cloud Run : https://task-pipeline-web-144787238689.us-central1.run.app/ by clicking 1 button "Oudrie, Please Execute !") or through Workbench by run this syntax : gemini -p "run run_tasks
task_list_gs_url = https://docs.google.com/spreadsheets/d/1lmGAV-5JFeEzWy-nZ3o3SEZF49plo8bFPHUSbg_MnBc/, task_list_gs_tab = 'Tasks', archive_task_gs_url = https://docs.google.com/spreadsheets/d/1lmGAV-5JFeEzWy-nZ3o3SEZF49plo8bFPHUSbg_MnBc/, archive_task_gs_tab = 'Archive Tasks'." --yolo . So the automation run. Notice that this syntax is not asking/chatting agent. Instead, it run the automation.Oudrie, by using its skills , MCP server, and agent team, execute the tasks. Then put result in this tab "Result".
User review all tasks results. If good, then in the tab "Tasks" column "Approved (Yes/No)" user put Yes. But if not good and need rework, then in column "Approved (Yes/No)" user put No then in column "Feedback" user put feedback (for this one no need to be multi-step) to improve the result.
Oudrie re-execute the tasks that were not approved. The approved tasks are untouched.
User review again all task results. If all good, then user put Yes in all tasks.
Oudrie copies the approved tasks from tab "Tasks" (column "Task List", "Vertex AI Log", "Update Timestamp") to tab "Archive Tasks" and put closing timestamp.
The automation will pick tasks again from number 2 in later time.
Automation Schema :
With Workbench : number 2, 5, 7, 8 need to be triggered manually by syntax gemini -p "run run_tasks" in Terminal.
With Cloud Run : number 2, 5, 7, 8 are able to be triggered seamlessly by clicking 1 button "Oudrie, Please Execute !"
How we built it
The action to code is almost 90 % done by AI, with details :
I listed detail parts of Oudrie to be built : the MCP Server (BigQuery tools, Google Sheet tools), skills (agent-coordination, bigquery, googlesheet, datasource-knowledge), agent team (agent_system), automation (run_tasks). For every part, I described context how to build the part as I really want. The list looks like this tab "Plan".
Inside Gemini CLI, I installed skills from Matt Pocock. Then I utilize /grill-me to help me build those parts. Especially for skills, I utilize /writing-for-agents.
Few tasks are manually edited by myself. For example : update code run_tasks to enhance ifs flow (after I was able to understand), renaming functions, creating Service Account (vertex-express@kzxy-11239.iam.gserviceaccount.com) and its Credentials, applying BigQuery Job User for vertex-express in GCP IAM, allow editor access for vertex-express in Google Sheet, Cloud Run initiation.
The complete steps on how to re-create Oudrie from Scratch until Live in Cloud Run is in Oudrie GitHub README section "How to Build/Run from Scratch until Live in Cloud Run".
Technology utilized :
The brain of Oudrie : gemini-3.6-flash, Vertex AI, skills
The organ system of Oudrie : Google ADK
The muscle and skeleton system of Oudrie : MCP server
The vehicle of Oudrie : Workbench, Cloud Run
Problem solving skills in Oudrie :
I avoid putting huge amount of context in Oudrie's skills since beginning because it will confuse the agent. Instead, let us human create detailed multi steps to-dos, since it is just one time heavy work. Then let Oudrie recognize it then make handoffs planning then execute it.
Oudrie naturally could accomplish tasks with diverse steps, without us to frequently editing the context in skills files.
The multi steps are completed smoothly because I designed that the temporary JSON files are always being produced and passed (handoffs) between agents in Oudrie.
Oudrie is capable to improve, by taking human feedback to rework unapproved tasks.
Challenges we ran into
Sourcing the public data that having discrepancies issues: I don't use internal company data for this personal project. I know it and I don't want to get data privacy trouble later on. Firstly I thought to create dummy data. But I tried to explore bigquery-public-data. I found
bigquery-public-data.usda_nass_agriculture.census_2012is quite interesting. During data exploration luckily I found the scenario that could be brought as data discrepancy issue example (although those data difference could be intentional due to effect of NASS Supression).Cost limitation : Operating /grill-me and /writing-for-agents to build/edit Oudrie parts, running automation to show that the Google Sheet operation was done by Oudrie/vertex-express@kzxy-11239.iam.gserviceaccount.com, will produce cost. Even my 1st Google Cloud 150 $ credit request was rejected (I forgot to register my gmail account to hackathon before I submitted the form). Luckily the cost of all of those are still under threshold where GCP will unfortunately stop my request. And thankfully on today 27 August 2026, my 2nd attempt Google Cloud credit was approved ! Some of credit have been used to build and testing Cloud Run.
Cloud Run working without loss connection : Even though no error, but Cloud Run many times loss connection/connection interupted. Cloud Run usually stops in the middle of task 001, task 005. So currently the best setting has been applied to prevent that : timeout 30 minutes, no cpu throttling, in code app.py use asyncio.wait_for(process.stdout.readline(), timeout=15.0) to give like "heartbeat" to prevent dropping Google Front End when process is silent (= Oudrie is in thinking mode). If Cloud Run has loss connection again, simply click again button "Oudrie, Please Execute!" then Oudrie will continue complete the other tasks until finish. Then for tasks need rework, put No in Approval and put Feedback, then click again button "Oudrie, Please Execute!" to get the revised result.
Accomplishments that we're proud of
Modular agent system is possible and recommended. We have to aim to have agent that doing real action and complete diverse tasks.
Full stack application based on 100% Google Cloud technology : AI models and frameworks are based on Google ADK, Gemini, Vertex AI. Codes are maintained inside Workbench Agent Platform. Tasks automation are developed and run with Cloud Run. Debugging and code development is using Gemini CLI.
What we learned
We have to collaborate with AI. We cannot put all "heavy workloads" (by giving very huge context, as well as by giving very minimum context) in AI Skills to complete our task, which only results to hallucination and not accurate result.
Try to evolve the automation platform from Terminal/syntax-based triggering to web platform using Cloud Run. And control many variables to ensure the Cloud Run run without sudden loss connection.
Operating multi features in Google Cloud Platform to build 100 % Google Cloud app : Workbench, IAM (for roles permission), Service Accounts (vertex-express@kzxy-11239.iam.gserviceaccount.com, 144787238689-compute@developer.gserviceaccount.com), Billing, BigQuery, Cloud Run. It is like "on the job training" as Google Cloud Engineer.
What's next for Oudrie
Optimize Cloud Run with primary objective to avoid sudden loss connection. Perhaps by time scheduling to run x tasks per y time period.
Increase effectiveness in multisteps.
Try out some other task topics to be completed by Oudrie.
Built With
- agent-platform
- agent-team
- cloud-run
- gemini-3.6-flash
- google-adk
- google-bigquery
- google-cloud
- google-sheet
- mattpocock
- mcp
- python
- skill
- vertex-ai
- workbench
Log in or sign up for Devpost to join the conversation.