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?
| Role | Use Case |
|---|---|
| Campaign analysts | Managing day-to-day data |
| Media buyers | Tracking placements and performance |
| Compliance officers | Maintaining FEC records |
| Campaign managers | Strategic spending overview |
Is my data secure?
Yes. The platform includes:
| Security Feature | Description |
|---|---|
| Role-based access control | Per-campaign permissions - users only see what they need |
| Google Workspace SSO | Enterprise authentication |
| Soft deletes | All delete operations are archived (data can be recovered) |
| Audit trails | Comprehensive logging of all actions |
| API rate limiting | Prevents abuse |
| Request idempotency | Prevents duplicate processing |
| Circuit breaker pattern | External API resilience |
| Secure infrastructure | Cloud-hosted on Fly.io with encryption |
| Error monitoring | Sentry error tracking and monitoring |
Access & Login
How do I get access?
Contact your organization's administrator to:
- Create an account for you
- Grant you access to specific campaigns
- 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:
| Source | Description |
|---|---|
| FCC Political Files | Broadcast advertising disclosures required by law |
| AdImpact | Commercial advertising intelligence platform |
| OpenFEC | Federal Election Commission campaign finance data |
| Meta Ads Library | Facebook and Instagram political advertising data |
| Google Political Ads | BigQuery public dataset for Google political ads |
| Email Newsletters | Gmail polling with confidence scoring |
| Manual Uploads | Files you upload (spreadsheets, PDFs) |
How often does data update?
| Source | Update Frequency |
|---|---|
| FCC | Every 6 hours (default, configurable) |
| AdImpact | Hourly (default, configurable) |
| OpenFEC | Configurable schedule |
| Meta Ads Library | Daily |
| Google Political Ads | Daily |
| Newsletters | Varies (configurable rate limiting) |
| Manual uploads | Immediately 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?
| Type | Description |
|---|---|
| Booked weeks | Past weeks or future weeks with confirmed contracts |
| Projected weeks | Estimated future spending not yet confirmed |
| Future Only | Just upcoming weeks (booked + projected) |
| Next Week | Only 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:
- Click on a cell (spend, GRP, impressions)
- Enter new value
- Press Enter to save
Viewers have read-only access and cannot edit.
How do I export data?
- Navigate to Output Hub → Matrix or Analytics
- Apply any filters you want
- Click "Export" button
- 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?
| Format | Use Cases |
|---|---|
| Excel/CSV | Rep sheets, AdImpact exports, FEC disclosures |
| FCC 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?
- File is uploaded to secure storage
- You click "Process" to extract data
- System parses file based on type
- New records appear in your Matrix
- 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:
- Go to Input Hub → Dedupe
- Find the resolved group
- Click "History"
- Click "Undo"
- 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:
- Note the record details
- Contact your admin
- Admin can manually group them or adjust detection rules
Roles & Permissions
What can each role do?
| Role | Permissions |
|---|---|
| Viewer | View dashboards, export data. Cannot edit or resolve duplicates. |
| Analyst | Everything Viewers can do, plus: edit matrix data, resolve duplicates, upload files. |
| Admin | Everything 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:
- Emails in spam/junk folder (check there first!)
- Email address misspelled in settings
- Your IT department is filtering emails
- 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?
- Go to Campaign → Settings → Alerts
- Increase the threshold amount
- Change from "Immediate" to "Daily Digest"
- Unsubscribe from specific alert types
- 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:
- Configure your dashboard view
- Go to Campaign → Settings → Email
- Set up scheduled reports or send one-time
- Add recipient email addresses
- Preview before sending
- 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 Type | Description |
|---|---|
| Missing station | Station assignment not found |
| Spend variance | Large differences between sources |
| Date overlap | Potential double-counting |
| Parse error | Problems processing uploads |
| Ingestion failure | External data collection issues |
| Email failure | Delivery problems |
Review and resolve them in the Exceptions tab.
Why do spend amounts differ between sources?
| Reason | Explanation |
|---|---|
| Timing | Different sources report at different times |
| Fees | One includes taxes/fees, another doesn't |
| Estimate vs. actual | Preliminary data vs. final numbers |
| Package allocation | Package deals split differently |
| Data entry | Errors 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?
- Go to Campaign → Admin → Ingestion
- Check "Recent Runs" table
- Look for green checkmarks (success) or red X's (failure)
- 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:
- Go to Campaigns page
- Click "New Campaign"
- Fill in details (name, keywords, DMAs)
- Save
The system will automatically find stations in your DMAs.
Can I copy settings from an existing campaign?
Yes, admins can clone campaigns:
- Open the campaign to clone
- Click "Clone Campaign"
- Give it a new name
- Settings and configuration are copied
- 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:
- Open the campaign
- Go to Settings or Admin section
- Modify keywords, DMAs, or other settings
- Save changes
- 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:
- Go to Campaign → Admin → Archives
- Find the archived record
- Click "Restore"
- 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:
- Check dashboard for overnight changes
- Review and resolve exceptions
- Process new duplicate groups
- Make necessary manual edits
- 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?
- User Guide - Comprehensive feature documentation
- Getting Started - Quick start guide
- Glossary - Definitions of all terms
- Troubleshooting - Detailed problem solving
Who do I contact for help?
- Your team - Colleagues may have faced similar issues
- Your admin - Organization's platform administrator
- Documentation - Check guides above
- 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
| Term | Definition |
|---|---|
| Campaign | Container for tracking a specific race |
| DMA | Designated Market Area (geographic region) |
| GRP | Gross Rating Points (reach metric) |
| Matrix | Main data table with spending details |
| Dedupe | Deduplication - finding and merging duplicates |
| Ingestion | Automated data collection from external sources |
| Exception | Data quality issue flagged by system |
| Archive | Where deleted records are stored (can be restored) |
| Feed | External 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?
- Get a Facebook access token with
ads_readpermission from the Meta Ad Library API - Set
META_ADS_API_TOKENas a Fly.io secret or in.env - Configure search terms per-campaign in Campaign Settings > Feeds > Meta Ads Library
- 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?
| Endpoint | Purpose |
|---|---|
/api/v1/ping | Fast liveness check |
/api/v1/health | Full health (DB, Redis, S3) |
/api/v1/observability/metrics | Prometheus metrics |
/api/v1/circuit-breakers | Circuit 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.