GP3MixMedia TrailMix - Frequently Asked Questions (FAQ)

Quick answers to common questions about the GP3MixMedia TrailMix platform.


General Questions

What is GP3MixMedia TrailMix?

GP3MixMedia TrailMix is a campaign media tracking and reconciliation platform that helps political campaign teams monitor advertising spending across multiple channels (Broadcast TV, Cable, CTV/Streaming, Digital, and Direct Mail/Phone). It automatically collects data from government sources and industry providers, identifies duplicates, and generates comprehensive reports.

Who should use this platform?

RoleUse Case
Campaign analystsManaging day-to-day data
Media buyersTracking placements and performance
Compliance officersMaintaining FEC records
Campaign managersStrategic spending overview

Is my data secure?

Yes. The platform includes:

Security FeatureDescription
Role-based access controlPer-campaign permissions - users only see what they need
Google Workspace SSOEnterprise authentication
Soft deletesAll delete operations are archived (data can be recovered)
Audit trailsComprehensive logging of all actions
API rate limitingPrevents abuse
Request idempotencyPrevents duplicate processing
Circuit breaker patternExternal API resilience
Secure infrastructureCloud-hosted on Fly.io with encryption
Error monitoringSentry error tracking and monitoring

Access & Login

How do I get access?

Contact your organization's administrator to:

  1. Create an account for you
  2. Grant you access to specific campaigns
  3. Assign you an appropriate role (Viewer, Analyst, or Admin)

Provide them with your email address and which campaigns you need to access.

Can I use my personal Google account?

No, you must use your organization's Google Workspace account. Personal Gmail accounts are not supported unless your organization specifically allows them.

Why can't I see any campaigns after logging in?

You need to be explicitly granted access to each campaign. Contact your admin and tell them which campaigns you need access to.


Data & Sources

Where does the data come from?

The platform automatically collects from 15+ external sources:

SourceDescription
FCC Political FilesBroadcast advertising disclosures required by law
AdImpactCommercial advertising intelligence platform
OpenFECFederal Election Commission campaign finance data
Meta Ads LibraryFacebook and Instagram political advertising data
Google Political AdsBigQuery public dataset for Google political ads
Email NewslettersGmail polling with confidence scoring
Manual UploadsFiles you upload (spreadsheets, PDFs)

How often does data update?

SourceUpdate Frequency
FCCEvery 6 hours (default, configurable)
AdImpactHourly (default, configurable)
OpenFECConfigurable schedule
Meta Ads LibraryDaily
Google Political AdsDaily
NewslettersVaries (configurable rate limiting)
Manual uploadsImmediately after you process them

Note: Admins can pause/resume ingestion and adjust rate limiting. See the Ingestion Control Guide for details.

Is the data real-time?

Not quite. External sources have their own update schedules:

  • FCC stations must file within certain timeframes
  • AdImpact processes data on their own schedule
  • Manual uploads depend on when you receive files

The platform polls sources frequently to get data as soon as it's available.

Can I trust the accuracy of the data?

The platform collects data as provided by the sources. Accuracy depends on:

  • FCC data: Generally reliable as it's legally required
  • AdImpact: Industry-standard intelligence with broad coverage
  • Manual uploads: Only as accurate as the files you upload

The deduplication system helps resolve conflicts between sources.

Why do I see the same buy multiple times?

When data comes from multiple sources (e.g., FCC and AdImpact both report the same ad), duplicates occur. This is normal. Use the Input Hub → Dedupe tab to identify and merge these duplicates.

What's the difference between "Booked" and "Projected" weeks?

TypeDescription
Booked weeksPast weeks or future weeks with confirmed contracts
Projected weeksEstimated future spending not yet confirmed
Future OnlyJust upcoming weeks (booked + projected)
Next WeekOnly next week's schedule

Choose based on what you're analyzing.


Using the Platform

What's the difference between Analytics and Matrix?

  • Analytics (Output Hub → Analytics): High-level overview with charts, metrics, and spending analysis. Best for presentations and quick checks.
  • Matrix (Output Hub → Matrix): Detailed table with all spending data. Best for analysis, editing, and detailed review.

Both show the same underlying data, just in different formats.

Can I edit the spending data?

Analysts and Admins can edit data directly in the Matrix:

  1. Click on a cell (spend, GRP, impressions)
  2. Enter new value
  3. Press Enter to save

Viewers have read-only access and cannot edit.

How do I export data?

  1. Navigate to Output Hub → Matrix or Analytics
  2. Apply any filters you want
  3. Click "Export" button
  4. Choose format:
    • CSV: For data analysis in Excel/Sheets
    • XLSX: For formatted Excel files
    • PDF: For static reports with charts

What file types can I upload?

FormatUse Cases
Excel/CSVRep sheets, AdImpact exports, FEC disclosures
PDFFCC orders, political file documents

Important: Choose the correct "file type" during upload so the system knows how to parse it.

What happens when I upload a file?

  1. File is uploaded to secure storage
  2. You click "Process" to extract data
  3. System parses file based on type
  4. New records appear in your Matrix
  5. Duplicates are automatically flagged for review

Can I undo changes?

Yes, in several ways:

  • Deduplication merges: Can be undone from the History view
  • Deleted records: Moved to archives and can be restored
  • Edited cells: No automatic undo, but you can re-edit

For major mistakes, contact your admin who can restore from archives.


Deduplication

How does the system detect duplicates?

The platform uses AI-powered detection with multiple factors:

  • Field-level matching (date, station, spots, rate)
  • Same market/DMA and station
  • Similar spend amounts with confidence scoring
  • Matching descriptions or creative names
  • Campaign keywords
  • Source-aware matching (FCC vs AdImpact vs Meta Ads, etc.)

Potential duplicates are grouped with confidence scores for your review.

Should I always merge duplicates?

Not necessarily. Review carefully:

  • Merge if they're truly the same ad buy from different sources
  • Skip if they're separate buys that just look similar
  • Flag for review if you're unsure

When in doubt, add notes and ask your team.

Can I undo a merge?

Yes! Recent merges can be undone:

  1. Go to Input Hub → Dedupe
  2. Find the resolved group
  3. Click "History"
  4. Click "Undo"
  5. Original records are restored

What if the system doesn't flag obvious duplicates?

The automatic detection has thresholds to avoid false positives. If you find duplicates not flagged:

  1. Note the record details
  2. Contact your admin
  3. Admin can manually group them or adjust detection rules

Roles & Permissions

What can each role do?

RolePermissions
ViewerView dashboards, export data. Cannot edit or resolve duplicates.
AnalystEverything Viewers can do, plus: edit matrix data, resolve duplicates, upload files.
AdminEverything Analysts can do, plus: create campaigns, configure data sources, send alerts, manage users, access archives.

How do I request a different role?

Contact your organization's administrator and explain:

  • Your current role
  • Why you need different permissions
  • What tasks you need to perform

Can I have different roles in different campaigns?

Not currently. Your role applies across all campaigns you have access to.


Alerts & Emails

Why aren't I receiving email alerts?

Most common reasons:

  1. Emails in spam/junk folder (check there first!)
  2. Email address misspelled in settings
  3. Your IT department is filtering emails
  4. Threshold hasn't been met to trigger alert

Solutions:

  • Whitelist the sender domain
  • Add sender to contacts
  • Check Output Hub → Email tab to see if emails were sent
  • Verify email address in settings

How do I stop getting so many alerts?

  1. Go to Campaign → Settings → Alerts
  2. Increase the threshold amount
  3. Change from "Immediate" to "Daily Digest"
  4. Unsubscribe from specific alert types
  5. Save changes

Can I customize email content?

Admins can customize:

  • Email subject lines
  • Which sections are included
  • Templates (using MJML)
  • Schedule and frequency

Analysts and Viewers cannot customize email content.

How do I send a dashboard report to my team?

Requires Admin or email permission:

  1. Configure your dashboard view
  2. Go to Campaign → Settings → Email
  3. Set up scheduled reports or send one-time
  4. Add recipient email addresses
  5. Preview before sending
  6. Save and activate

Performance & Technical

Why is the platform slow?

Common reasons:

  • Large campaign with thousands of records
  • Too many browser tabs open
  • Need to clear browser cache
  • Network connection issues
  • Peak usage times

Quick fixes:

  • Use filters to show less data at once
  • Close unused browser tabs
  • Clear cache and refresh
  • Try a different browser
  • Export data to work locally

Which browsers are supported?

Recommended browsers:

  • Google Chrome (latest version)
  • Mozilla Firefox (latest version)
  • Microsoft Edge (latest version)
  • Safari (latest version)

Not supported:

  • Internet Explorer (end of life)
  • Very old browser versions

Can I use this on my phone or tablet?

The platform is designed for desktop use. While it may work on tablets/phones, many features are optimized for larger screens. Minimum recommended screen width is 1280px.

Why do exports take so long?

Large campaigns with lots of data take time to process:

  • CSV: Usually 10-30 seconds
  • XLSX: 30-60 seconds (includes formatting)
  • PDF: 60-90 seconds (generates charts)

Don't close the browser tab while exporting. Use filters to export less data if it's timing out.


Data Quality & Exceptions

What are "Exceptions"?

Exceptions are data quality issues automatically detected:

Exception TypeDescription
Missing stationStation assignment not found
Spend varianceLarge differences between sources
Date overlapPotential double-counting
Parse errorProblems processing uploads
Ingestion failureExternal data collection issues
Email failureDelivery problems

Review and resolve them in the Exceptions tab.

Why do spend amounts differ between sources?

ReasonExplanation
TimingDifferent sources report at different times
FeesOne includes taxes/fees, another doesn't
Estimate vs. actualPreliminary data vs. final numbers
Package allocationPackage deals split differently
Data entryErrors at the source

Use deduplication to choose which value is most accurate.

What does "Missing Station" mean?

The system found spending but couldn't identify which station/outlet it was for. This happens with:

  • Unclear data in uploaded files
  • National buys without station breakdown
  • New stations not yet in database

To fix: Assign the correct station from the dropdown in the Exception.

How do I know if data collection is working?

  1. Go to Campaign → Admin → Ingestion
  2. Check "Recent Runs" table
  3. Look for green checkmarks (success) or red X's (failure)
  4. Click on a run to see details

If runs are failing, check configuration or contact admin.


Campaigns

How do I create a new campaign?

Requires Admin role:

  1. Go to Campaigns page
  2. Click "New Campaign"
  3. Fill in details (name, keywords, DMAs)
  4. Save

The system will automatically find stations in your DMAs.

Can I copy settings from an existing campaign?

Yes, admins can clone campaigns:

  1. Open the campaign to clone
  2. Click "Clone Campaign"
  3. Give it a new name
  4. Settings and configuration are copied
  5. Data is NOT copied (fresh start)

What are Keywords and DMAs?

Keywords: Terms the system watches for to identify relevant data

  • Candidate names
  • Campaign slogans
  • Key issues

DMAs: Designated Market Areas (geographic regions) where you're advertising

  • System finds all stations in those markets
  • Nielsen-defined regions

How do I change campaign settings?

Requires Admin role:

  1. Open the campaign
  2. Go to Settings or Admin section
  3. Modify keywords, DMAs, or other settings
  4. Save changes
  5. May need to trigger data refresh

Archives & Data Retention

Are deleted records permanently gone?

No! The platform never permanently deletes data initially. All deletes move records to archives where they can be restored.

How do I restore archived data?

Requires Admin role:

  1. Go to Campaign → Admin → Archives
  2. Find the archived record
  3. Click "Restore"
  4. Record moves back to main tables

How long are archives kept?

Retention policies are configurable per table:

  • Some tables: 30, 60, or 90 days
  • Some tables: Indefinitely
  • Admins can permanently delete after retention period

Check with your admin for your organization's policies.


Best Practices

How often should I review duplicates?

Weekly is recommended. Don't let them pile up. Regular review:

  • Keeps data clean
  • Makes each session manageable
  • Prevents confusion later

Should I use filters?

Yes! Filters are essential for large campaigns:

  • Make data manageable
  • Improve performance
  • Help focus on specific markets or timeframes
  • Speed up exports

How should I organize my workflow?

Suggested daily routine:

  1. Check dashboard for overnight changes
  2. Review and resolve exceptions
  3. Process new duplicate groups
  4. Make necessary manual edits
  5. Verify ingestion is running

Weekly:

  • Full data review
  • Export reports for team
  • Clean up old files

Should I add notes to records?

Yes! Notes help future you and your team:

  • Explain unusual entries
  • Document resolution decisions
  • Track data sources
  • Note corrections made

Common Errors

"Session Expired"

Your login timed out due to inactivity. Just log in again. Your work should be auto-saved.

"You Don't Have Permission"

Your role doesn't allow that action. Check your role (profile menu) and request an upgrade from admin if needed.

"Upload Failed"

File may be too large, corrupted, or unsupported format. Try:

  • Smaller file
  • Re-save in CSV or XLSX
  • Check internet connection

"Processing Error"

System couldn't parse your file. Common causes:

  • Wrong file type selected
  • Unexpected format
  • Corrupt file

Click the file name to see detailed error message.

"Export Timeout"

Too much data to export at once. Try:

  • Use date range filters
  • Export by market (one at a time)
  • Break into smaller chunks

Getting More Help

Where can I learn more?

Who do I contact for help?

  1. Your team - Colleagues may have faced similar issues
  2. Your admin - Organization's platform administrator
  3. Documentation - Check guides above
  4. Technical support - If your organization has dedicated support

How do I report bugs or request features?

Contact your organization's administrator with:

  • Description of the issue or request
  • What you were trying to do
  • Expected vs actual behavior
  • Screenshots if applicable

Admins can submit feedback to the development team.

Can I get training?

Training availability depends on your organization. Ask your administrator about:

  • Onboarding sessions
  • Training materials
  • Lunch & learns
  • One-on-one walkthroughs

Terminology Quick Reference

TermDefinition
CampaignContainer for tracking a specific race
DMADesignated Market Area (geographic region)
GRPGross Rating Points (reach metric)
MatrixMain data table with spending details
DedupeDeduplication - finding and merging duplicates
IngestionAutomated data collection from external sources
ExceptionData quality issue flagged by system
ArchiveWhere deleted records are stored (can be restored)
FeedExternal data source (FCC, AdImpact, etc.)

For complete definitions, see the Glossary.



Developer & Technical Questions

What tech stack does this use?

Next.js 15.5.9 (App Router) with React 19.2, TypeScript 5.9, MySQL 8+ via Prisma ORM 7.2.0, and Upstash Redis for caching. Deployed on Fly.io with Docker. See the Developer Quick Reference for full details.

How do I set up the Meta Ads Library feed?

  1. Get a Facebook access token with ads_read permission from the Meta Ad Library API
  2. Set META_ADS_API_TOKEN as a Fly.io secret or in .env
  3. Configure search terms per-campaign in Campaign Settings > Feeds > Meta Ads Library
  4. The feed runs every 8 hours by default (configurable via META_ADS_CRON)

See the Feed Configuration Guide for detailed setup instructions.

Where are the environment variables documented?

The .env.example file in the gp3mixmedia-web/ directory contains all 300+ environment variables with inline documentation. The Developer Quick Reference has categorized tables with defaults and explanations.

What external services does this depend on?

Required: Fly.io (hosting), MySQL (database), Upstash Redis (caching/rate limiting), AWS S3 or Tigris (file storage), Gmail API (email)

Optional data feeds: Meta Ad Library API, Google BigQuery, AdImpact API, OpenFEC API, FCC (no API key needed), Google Civic API

Optional monitoring: Sentry (error tracking), OpenTelemetry (tracing), Speechmatics or Deepgram (transcription)

How do the cron jobs work?

Background jobs run on the ingest process on Fly.io. All schedules are defined in src/workers/scheduler/cron-config.ts and configurable via environment variables. Each job has an *_ENABLED flag and a *_CRON override. See the Developer Quick Reference for the full schedule.

What's the deployment process?

cd gp3mixmedia-web && fly deploy

This builds the Docker image, runs database migrations (via release_command), and deploys to Fly.io. Secrets are set with fly secrets set KEY=VALUE --app gp3mixmedia-web.

How do I run tests?

npm test           # Run all tests (Vitest)
npm run build      # Verify no build errors (important for circular dependency detection)

What are the health check endpoints?

EndpointPurpose
/api/v1/pingFast liveness check
/api/v1/healthFull health (DB, Redis, S3)
/api/v1/observability/metricsPrometheus metrics
/api/v1/circuit-breakersCircuit breaker status

Didn't find your answer? Check the Troubleshooting Guide or contact your administrator.

Last Updated: March 2026

Was this helpful? If you have feedback or questions, please contact your administrator.