Internal Tool — Single Advertiser Account

MJJ Marketing

MJJ Marketing is an internal Google Ads automation tool. It uses the Google Ads API to research keyword demand and cost before a campaign is created, to monitor how campaigns are performing after launch, and to automatically pause a campaign that is spending money without producing conversions.

It runs on a single Google Ads account owned and operated by us. It is not sold, licensed, or made available to anyone else, and it has no public interface or user accounts.

1. Purpose and Operational Scope

This software infrastructure is built exclusively for internal operations. It manages performance marketing for a single, self-managed Google Ads account.

Strictly Internal: This application is not a SaaS platform, is not licensed to third parties, is not an agency tool, and provides no public-facing interface or multi-tenant access. All operations are conducted by the account owner.

2. Google Ads API Utilization

The integration with the Google Ads API follows the principle of least privilege, with limited read-only analytical queries and a single automated safeguard mutation:

Current status: the integration is implemented and awaiting a Basic Access developer token. At the current access level, the calls described below return PERMISSION_DENIED, so no production API traffic is being generated yet. The scope described here is the complete set of operations the tool performs — nothing beyond it is implemented.

Keyword Discovery Read-Only

Calls KeywordPlanIdeaService.GenerateKeywordIdeas to retrieve average monthly search volume, competition level and index, and top-of-page bid ranges for a product category, before deciding whether a campaign is worth running.

Telemetry & Metrics Read-Only

Designed to use GoogleAdsService.SearchStream to query campaign performance (impressions, clicks, spend, and conversion events). This retrieval is not yet active: the diagnostic stage currently reads a performance report exported manually from the Google Ads interface, and will read the same fields directly from the API once access is granted.

Automated Loss Mitigation Safe Mutate

Invokes CampaignService.MutateCampaigns exclusively to transition campaign status to PAUSED. This is the only write operation the tool performs. It is triggered by a fixed arithmetic rule evaluated against a campaign's own reported figures — spend has reached at least one full commission, click-through rate is below a set threshold, and no conversion has been recorded. Any campaign that does not match that rule exactly, including any campaign with incomplete data, is reported to the operator instead of being acted upon. No language model participates in this decision.

3. Human Oversight & Operational Safety

4. Security and Data Protection

API credentials, OAuth refresh tokens, and operational parameters are stored in a local environment file (12-Factor App standards), excluded from version control and restricted to the operating system account that runs the tool. Credentials are never committed to any repository, never printed to logs, and never sent to any third party. No advertiser data, performance telemetry, or customer information is transmitted to external vendors or third-party networks.