Row Level Security by default
Customer-facing reads are protected by Supabase RLS policies. Users only see rows linked to organizations they belong to.
AdTool separates the public website, customer portal, Supabase data layer and Google Cloud worker so sensitive credentials and campaign-changing operations stay off the browser.
Customer-facing reads are protected by Supabase RLS policies. Users only see rows linked to organizations they belong to.
Service role access is only used inside Supabase Edge Functions and the Cloud Run worker, never in the static browser bundle.
AI can propose actions, but Google Ads mutations are only dispatched after an authenticated user approves them.
Google Ads and OpenRouter jobs run in Google Cloud Run behind a shared worker secret, with operational logs and job records.
Syncs, audits, proposed actions, approvals, worker jobs and mutation results are recorded in Supabase tables.
Customers never share Google passwords. Access is delegated through the Google Ads manager-account workflow.
The browser uses Supabase Auth and RLS for customer-visible data. Supabase Edge Functions validate user intent and dispatch jobs. Google Cloud Run performs Google Ads and AI work with secrets stored server-side. Every approved mutation is logged before and after execution.