Midsummer: Dex AI contacts, daily digests, GraphQL scale, and deal devices

July focused on making contacts and activity more useful day to day: Dex AI enrichment in the product, accurate Contacts API and MCP attribution, publisher daily digests with transaction status, GraphQL and Searchkick hardening for large indexes, deal device targeting across AMP and APIs, network data improvements, and a broad design-system and reliability refresh.

Contacts, Dex AI & MCP attribution

Eligible admins and paid publisher users can enrich visible contacts with Dex AI, filling missing LinkedIn, name, and title details while keeping same-email contact names consistent. MCP-created contacts stamp HiEnergy MCP (caller email) and expose lastEditedBy in GraphQL. Contacts API documentation was aligned with live auth and create rules: REST requires admin or paid-publisher access, while any authenticated MCP user can add.

Daily account activity digests

Subscribed users at paid publishers with connected networks can receive weekday Hi Energy Daily Digests with transaction-status context. Delivery was made more reliable, empty summaries are avoided for accounts without connected networks, and KPI chart tooltips were fixed for clearer reading.

GraphQL, Searchkick & reporting

GraphQL gained contacts coverage and dedicated transactions documentation/playground examples, with timeouts and Searchkick query hardening for large indexes (including unfiltered terms and advertiser filters). New transaction age and network reports, a status-breakdown surface backed by a daily materialized view, deferred advertiser panels, and home clicks rankings via matviews make unpaid exposure and click performance easier to scan.

Deal device targeting & AMP

Deals carry a device attribute (all, desktop, mobile, or tablet) editable in admin, indexed in Searchkick, and filterable via REST device and GraphQL deals(device:). REST responses also include device_label. AMP Find inventory syncs per desktop/mobile/tablet so device-specific offers stay aligned.

MCP auth, Claude directory & tooling

MCP discovery and scale safeguards were hardened. General API requests treat Bearer authentication as exclusive; MCP connections with an explicit publisher API key use that identity to preserve publisher-scoped access. Env-configurable CIMD and dynamic-registration discovery metadata were added in preparation for Claude directory OAuth.

Networks & data pipelines

Impact transactions gained status normalization, fresher daily and weekly pulls, and safer campaign preloads to avoid timeouts. Administrative portfolio-import tooling was improved. Sovrn sync cursor and stats handling were fixed; Skimlinks Domain ID support lets Link Builder emit id=PIDXDID; FlexOffers cancelled/non-commissionable statuses map to rejected; and advertiser status-history noise was deduped in the UI.

Design system, charts & admin UX

D3 charts gained tooltips and entrance animations; a D3 chart gallery was added to the design system; and the neo-brutalist button treatment was expanded. Contacts source charts show valid and catchall, clicks period tooltips no longer clip, agency forms avoid loading complete advertiser and publisher lists, and flash messaging is unified.

CI, Yarn & reliability

The frontend toolchain moved from Yarn Classic to Yarn 2.4.3 with Node 22. Build and test feedback is faster, releases handle migration conflicts more safely, and job and task failures send richer diagnostic context for more reliable production operations.

The past few months at a glance

A rolling summary of recent work on Hi Energy: design-system foundations, Searchkick-first admin search, clicks and performance reporting, MCP and Dex maturity, Slack workflows, agency multi-account access, daily digests and contact enrichment, a steady stream of network integrations, and production hardening across exports, materialized views, and CI. This page is not exhaustive; it groups the most visible themes. For month-by-month detail, use the articles below.

Monthly deep dives

  • July 2026 — Dex AI contacts, daily digests, GraphQL scale, deal devices, network data, and reliability.
  • June 2026 — Comments, Slack digests, AI repair tools, Cowork MCP policy, QTD reporting, and API reliability.
  • May 2026 — Click analytics, MCP directory readiness, Dex in Slack, Connexity, and agency reporting.
  • April 2026 — Dex/MCP workflows, export resilience, design-system rollout, and network integration cleanup.

December 2025

  • Refactored Bootstrap styling and improved the shared page_header and deal-terms layout.
  • Added operational rake tasks for publisher deal backfills and continued AI normalization script tuning.

January 2026

  • Integrated Optimise advertisers, campaigns, and status mapping; added LinkConnector deals sync.
  • Introduced the clicks model and wired clicks into reporting paths; refactored Partnerize transactions to weekly batches.
  • Moved transactions and advertiser APIs toward Searchkick; launched performance-summary email and the home portfolio tab.
  • Tightened CI job ordering for fail-fast feedback and added ERB lint to pre-commit hooks.

February 2026

  • Started TradeTracker onboarding with credentials and advertiser sync; campaign, transaction, and deal support followed in early March.
  • Centralized admin deals querying on Searchkick; refined admin filter UX, country filters, and risk tags on advertisers.
  • Improved contacts export and preload paths to eliminate N+1 queries; hardened session authentication for network clients.

March 2026

  • Expanded MCP with top report views, active-deals-by-country, improved advertiser search/lookup, and higher chat output limits.
  • Aligned deals export filters with the admin list (including hidden deals); added Skimlinks Link Builder support.
  • Fixed Intercom launcher behavior (JWT-backed lazy load, Turbo-safe help triggers); added clicks migration safety for large indexes.

Themes across the period

  • Design system — Public design system page, shared tabs, filter bars, empty states, D3 chart tokens, and neo-brutalist buttons.
  • Search & policy — Faster, permission-aware search across admin tools and APIs, plus more reliable GraphQL queries.
  • Performance & data — Faster KPI, click, conversion, publisher, quarterly, status, and digest reporting.
  • MCP & Dex — Cowork-ready tools, OAuth/CIMD, encrypted API keys, contact discovery and auto-enrichment, and Slack Dex.
  • Slack — Dex bot in channels, slash search, Block Kit onboarding, weekly digests, commission-drop canvases, and publisher channel mapping.
  • Networks — Connexity, Optimise, LinkConnector, TradeTracker, Sovrn, Partnerize, Rakuten, AdMarketplace Find, Impact, PartnerStack, Webgains, and Levanta improvements.
  • Reliability — Faster pages, safer releases, stronger dependency maintenance, and fewer production timeouts.

Early summer: comments, Slack digests, AI repair tools, and admin polish

The past month focused on in-app collaboration, hardening Slack publisher notifications, making MCP and AI advertiser repair workflows production-ready for Cowork, tightening admin deals and performance reporting, and closing API and query-performance gaps surfaced in production.

Comments & collaboration

Polymorphic comments landed across admin surfaces so teams can leave context where work happens: advertisers, publishers, networks, agencies, deals, and application requests share one comments UI with loading states and consistent authorization. Advertiser comments respect the same access rules as other commentable resources.

Slack digests & publisher notifications

Slack channel delivery and enrollment were hardened for publisher weekly digests and commission-drop notifications. Digest canvases now use dated titles and markdown tables for cleaner reading in Slack; publisher editors can send weekly digest previews; test-message delivery was improved; and bot scopes were expanded so preview posts reach the right channels.

MCP, AI data repair & Cowork

Advertiser AI repair is available through a dedicated API endpoint and MCP tool, with synchronous processing and retries when requested fields remain incomplete. Admins and paid publishers can add contacts through REST; authenticated MCP users can add contacts through MCP tools.

Performance, deals & admin workflow

Performance summary gained QTD and last-quarter periods backed by new materialized views; publisher stats now read from snapshots instead of live aggregates. Admin deals split the country map into its own tab with scoped filters on both the table and map; global search links campaigns to the advertiser’s Campaigns tab; Link Builder usage is tracked per source; and application-request filters merge safely with policy scope.

Network integrations & hidden deals

Partnerize discovery campaigns sync into Campaign records with refreshed counts; AdMarketplace Find ingestion turns server-side tiles into hidden deals; Rakuten credential UI supports dual-auth probing with clearer non-2xx logging; FlexOffers and deal-import paths normalize advertiser countries before pulling deal geography; and publisher stats materialized views count nil campaign statuses correctly.

API reliability & verticals

The verticals API no longer times out on large distinct counts and scopes aggregations to authorized advertisers; tag hydration for vertical names was fixed so responses include real ids and timestamps instead of null placeholders. Searchkick ID validation and deals filter param validation reject bad input before expensive queries; MCP resilience adds empty-result fallbacks across search tools; and JWT was bumped to address a published CVE.

Reliability, navigation & admin UX

N+1 queries on application requests and recent changes were eliminated. Global search now includes navigation shortcuts tailored to each user’s access, export links work reliably within filtered results, and map tooltips distinguish publishers with duplicate names.

Late-spring platform push: clicks analytics, MCP maturity, Slack, and Connexity

The past few weeks focused on making performance data easier to read, hardening MCP and API integrations for external directories and connectors, expanding Slack/Dex workflows, shipping Connexity end-to-end, and closing agency reporting gaps.

Performance summary & click analytics

The clicks, EPC, and conversion-rate charts introduced in April now load from materialized snapshots, including all-publisher comparisons and publisher-level drilldowns. MTD table comparisons were corrected so the current month lines up against the same days last month. CJ programs that do not report clicks show a clear dash instead of misleading zeros.

MCP, Dex AI & public API

MCP moved closer to production-grade external use: Anthropic Directory submission prep, OpenAI Responses API–compatible tools/list, clearer tool error shaping, and Searchkick-backed advertiser contact discovery. User API keys are encrypted at rest without changing integration values; only the key owner sees their API key and MCP link in the UI. The clicks API is documented in OpenAPI and indexed in Searchkick; transaction search failures are handled more gracefully; MCP-proxied requests return real contact emails; and the API docs playground can live-probe endpoints.

Slack & Dex in Slack

Dex in Slack was polished end-to-end: the bot answers as @dex_ai, rotates friendly “thinking” phrases, supports threaded replies, and scopes channel MCP calls to the mapped publisher. Slash search respects the channel’s publisher; carousels link through to deals and advertisers; and authorized admins can manage selected publisher settings through Slack. OAuth installation failures were fixed, Block Kit onboarding and test-message controls were added, and private channels appear in the admin picker.

Connexity network

Connexity is wired through the full stack: advertiser sync, admin credentials UI and validation, MCP tools, deeplink generation, and registration in the admin network list and last-sync recorder. Sync defers expensive global approval metrics so large imports stay responsive.

Deals API & admin filtering

The Deals API gained deal_type and deal_visibility filters with an updated playground. Searchkick deal queries were stabilized for legacy NULL deal_kind rows, hidden-deal handling, and deterministic pagination; admin show_hidden is enforced even when Searchkick drifts.

Agency & multi-account access

Agencies managing publishers can use the Link Builder across managed accounts, see publisher-level exports and analytics reports (matching paid-publisher visibility), and—when they manage at least one publisher—get the full navbar mega menu with Performance, Reports, Analytics, and related tooling instead of the slim restricted dropdown.

Reliability, security & admin polish

Account access, publisher visibility, network refresh authorization, and slow data-cleanup paths were hardened. Transaction and Webgains credential validation became more resilient, while the advertiser Commission tab now loads on demand with a clear skeleton state.

April was a platform month

April was a broad product and infrastructure push for Hi Energy: better AI workflows, faster reporting, sturdier exports, cleaner admin tools, stronger network integrations, and a more coherent UI foundation.

MCP, Dex AI & API workflows

The MCP and Dex surfaces grew from documentation and search helpers into richer operational workflows. We added advertiser discovery, advertiser contact workflows, ChatGPT MCP dynamic registration, OAuth support, protected resource metadata, marketplace metadata, clearer tool contracts, streaming chat responses, and better advertiser context throughout Dex.

Reporting, performance summaries & exports

Reporting became more useful and more resilient. Performance summaries gained clicks, EPC, and conversion-rate graphing; CJ click gaps are clearer; Webgains revenue inflation was corrected; and materialized-view refreshes were split and optimized for scale. Large customer exports also became safer through chunked branded workbooks, clearer part labeling, row caps, retry handling, and a Heroku-friendly report reaper.

Admin, agency & design-system polish

Agency workflows now support multi-account management, agency types, unified account search, compact account admin views, LinkedIn discovery, and richer seed examples. Admin user management was tightened with profile edit lockdown, alias-login fixes, stronger CRUD coverage, and safer destructive actions. At the same time, shared page headers, search/filter bars, tables, empty states, tokens, buttons, and layout partials moved the app toward one consistent design system.

Network integrations & data correctness

The network layer saw steady cleanup across Rakuten, Partnerize, PartnerStack, Webgains, LinkConnector, Tradedoubler, Levanta, Skimlinks, and Impact. Highlights include Rakuten partnership status truth, PartnerStack advertiser/transaction/reward sync, Webgains value parsing fixes, Skimlinks Link Builder support, Tradedoubler auth and refresh safeguards, Levanta brand sync, and better approved-advertiser status mapping.

Production reliability, security & CI

Builds, migrations, background processing, asset delivery, and browser-side security were hardened for more reliable releases. Self-hosted Bootstrap Icons and Montserrat font loading became more dependable, reindexing safeguards reduced deployment risk, and dependency maintenance continued.