Inspiration

Small research and innovation teams can lose huge amounts of time finding opportunities, reading rules, checking eligibility, comparing them against existing projects, assessing novelty, and deciding whether an opportunity is worth pursuing.

OpportunityOps was built to automate that operational burden.

What it does

OpportunityOps is an autonomous innovation-operations agent.

It continuously monitors an allowlisted official opportunity source and, when a material change is detected, it:

  1. extracts and normalizes binding requirements,
  2. checks eligibility,
  3. matches the opportunity against a live internal project portfolio,
  4. performs a bounded competitor and novelty audit,
  5. produces an evidence-backed GO / HOLD / KILL decision,
  6. generates an internal action packet,
  7. persists the workflow state and evidence in Firestore.

If the opportunity has not materially changed, the workflow stops before Gemini is called. This prevents duplicate analysis and unnecessary model cost.

How we built it

The system runs on Google Cloud.

Cloud Scheduler triggers the background workflow every six hours through Pub/Sub. A private Cloud Run worker processes the event, stores persistent state in Firestore, and invokes Gemini through Google ADK when reasoning is actually required.

A separate public Cloud Run dashboard exposes the live system status, portfolio matching, decision reasoning, competitor audit, action packet and execution timeline.

The architecture deliberately separates the public judging surface from the private autonomous worker.

Google Cloud architecture

Cloud Scheduler → Pub/Sub → private Cloud Run worker → Firestore → Gemini / Google ADK → decision and action packet.

A public Cloud Run dashboard reads the persisted workflow state for inspection.

Challenges

The main challenge was making the system genuinely autonomous rather than simply presenting an AI chat interface.

We also needed to make repeated executions safe and economical. OpportunityOps therefore fingerprints source state and implements an explicit UNCHANGED → SKIPPED_UNCHANGED gate so repeated scheduler events do not trigger unnecessary model calls.

Another challenge was maintaining an auditable evidence trail. Decisions, source evidence, portfolio matches, novelty findings and workflow events are persisted rather than existing only inside a transient model response.

Accomplishments

  • Deployed autonomous scheduled monitoring on Google Cloud.
  • Built an event-driven private worker using Cloud Scheduler, Pub/Sub and Cloud Run.
  • Integrated Gemini and Google ADK into a bounded decision workflow.
  • Added persistent Firestore state and evidence.
  • Implemented portfolio matching and competitor/novelty auditing.
  • Added GO / HOLD / KILL decision generation.
  • Added automatic internal action packets.
  • Implemented an idempotent cost gate that skips Gemini when the source is unchanged.
  • Deployed a public read-only judging dashboard.
  • Published a reproducible open-source repository and live demonstration.

What we learned

Agentic systems become significantly more useful when the model is only one component of a larger operational system.

Persistent state, deterministic gates, event triggers, evidence handling, observability and cost controls matter as much as the reasoning model itself.

What's next

OpportunityOps could expand from a single monitored opportunity into a multi-source operating layer for small innovation teams.

Future versions could monitor grants, hackathons, RFPs and open-innovation challenges simultaneously, maintain larger project portfolios, notify workspace channels, prepare submission drafts, and manage opportunity pipelines while keeping consequential external actions behind explicit human approval.

Built With

Share this project:

Updates

Submission history