Skip to main content

Loading…

Skip to main content
HomeProjectsPostsApproachesStackResourcesContact
Justin Tsugranes LogoJustin Tsugranes Logo

Justin Tsugranes

HomeProjectsPostsApproachesStackResourcesContact

Stay in the loop

Occasional notes on what I'm building, lessons earned, and the studio behind it.

By subscribing, you agree to receive No spam. Unsubscribe in one click anytime. from Justin Tsugranes. No spam. Unsubscribe anytime. Privacy Policy

© 2026 Total Ventures LLC. All rights reserved.

Privacy PolicyTerms of ServiceCookie Policy
← All stack tools

Stack Tool · compute

Google Cloud Scheduler

Google Cloud Scheduler centralizes all scheduled tasks for Total Ventures, replacing fragmented cron solutions with a reliable, managed service.

Visit cloud.google.com/scheduler ↗

Google Cloud Scheduler provides a managed, highly reliable cron service, serving as the single source of truth for all scheduled operations across the Total Ventures studio.

What it is

Cloud Scheduler is a fully managed cron job service on Google Cloud Platform. It allows me to define schedules (e.g., `every 24 hours`, `every Monday at 9 AM`) that trigger various targets: HTTP endpoints, Pub/Sub topics, or App Engine tasks. It's designed for high availability and reliability, meaning scheduled tasks execute consistently without me needing to manage underlying infrastructure. This abstraction is critical for a solo operator running multiple products.

How I use it

Its primary use in the Total Ventures stack is to drive backend automation for all brands. I define schedules in `mission-control/scheduler/schedules.ts` within my monorepo. A custom `cron:apply` command then provisions these definitions to Cloud Scheduler across the relevant GCP projects. For example, Total Formula 1 uses it to trigger daily data aggregation from external race APIs, ensuring leaderboards and statistics are current. Pregnancy Power Hour schedules weekly content pre-fetches and triggers the generation of personalized email digests. Inky leverages Cloud Scheduler to run hourly checks on image processing queues and to clean up stale or unused assets in Cloudinary, maintaining efficient storage.

This setup ensures that all scheduled operations are declared in code, version-controlled, and deployed predictably. It decouples the schedule itself from the compute target, allowing me to trigger functions deployed on Vercel or Cloud Functions, or even external services, all from one central scheduler.

Why this over alternatives

I learned the hard way that fragmented cron solutions become an operational burden. Before Cloud Scheduler, I experimented with `vercel.json` crons for Next.js App Router functions and Firebase `onSchedule` functions. Vercel's crons are tightly coupled to the deployment environment and lack the flexibility needed for triggering non-Vercel targets or managing schedules across multiple distinct projects. Firebase's `onSchedule` functions, while convenient for simple, tightly integrated Firebase tasks, still scatter schedule definitions across individual function deployments, making a holistic view difficult.

Cloud Scheduler offers a single pane of glass for all scheduled tasks, regardless of their target or the product they serve. It's environment-agnostic, allowing me to trigger any HTTP endpoint. The reliability is also a major factor; I don't spend time debugging missed cron runs. The cost is negligible for the value it provides, easily fitting into a solo operator's budget.

Where it falls short

The user interface in the Google Cloud Console can feel a bit clunky, especially when managing a large number of schedules. It's functional, but not always intuitive for quick edits. Initial setup also requires a clear understanding of IAM roles and service accounts to ensure the scheduler has the necessary permissions to invoke its targets. While the `cron:apply` script abstracts much of this, the underlying complexity is there. For extremely simple, single-function cron jobs, the overhead of setting up Cloud Scheduler might seem excessive compared to an inline `onSchedule` function, but for a multi-product studio, the benefits of centralization and reliability outweigh these minor friction points.

FAQs

Is it expensive for a solo operator?
No, the free tier is generous, covering millions of executions per month. Beyond that, costs are minimal, often pennies per month. It's a highly cost-effective solution for consistent task scheduling across multiple products.
How do you manage schedules across multiple projects?
I define all schedules in `mission-control/scheduler/schedules.ts` within a monorepo. A custom `cron:apply` command provisions these to the correct GCP projects, ensuring a centralized, code-driven approach to scheduling.

See how I run a multi-brand studio with this stack.

See the full stack →
Written by Justin Tsugranes, Founder, Total Ventures· Founder, Total Ventures · U.S. Army veteran (13 years) · M.M. Jazz Studies, University of South Carolina
Last reviewed July 22, 2026

Related

  • Google Cloud StorageGoogle Cloud Storage is the reliable object storage for Total Ventures' static assets, serving everything from OG images to user-uploaded PDFs via CDN.
  • Firebase Hosting + Cloud FunctionsFirebase Hosting and Cloud Functions provide the core backend services—authentication, data storage, and serverless compute—that power every Total Ventures product, handling tasks that require persistent state or scheduled execution.
  • Cal.comCal.com is an open-source, self-hostable booking platform that provides the flexibility and webhook extensibility I need for client consultations and strategy sessions across Total Ventures, without vendor lock-in.
  • FirestoreFirestore is the document database for every Total Ventures brand, providing scalable, serverless data management with integrated security rules that act as the auth layer.
  • SlackSlack serves as the central hub for critical operational alerts, cron job heartbeats, and automated system notifications across all Total Ventures brands, ensuring immediate visibility into system health.
  • SanitySanity is the headless CMS I use across Total Ventures for all editorial content, providing a structured content backend that integrates directly with my frontend projects and agentic workflows.