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.
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.
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.
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
- No Autonomous Budget Escalation: The tool is technically incapable of increasing campaign budgets, raising maximum CPC bids, or publishing new campaigns autonomously.
- Mandatory Human Approval: Campaign creation, ad creative updates, and budget allocation decisions require explicit manual review and execution by the account manager.
- Audit Logging: Every Google Ads API call the tool makes — each read and each automated pause, whether it succeeds or fails — is written as a separate timestamped entry to an append-only local log. Entries are never overwritten or removed by the tool, so the full sequence of API activity can be reviewed after the fact.
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.