Problem
Newsletter teams often have performance data spread across exports, campaign reports, audience segments, and spreadsheets. They need to know what changed, which audience is under pressure, and what to do next.
Marketing intelligence / Data product
Local-first marketing intelligence command center.
Campaign Pulse turns newsletter, campaign, audience, target, and CSV export data into adapter-validated diagnostics, audience pressure signals, target-aware performance reads, and monthly operating reports.

Case Snapshot
The problem, the system response, the available proof, the strategic value, and the intentional boundary.
Problem
Newsletter teams often have performance data spread across exports, campaign reports, audience segments, and spreadsheets. They need to know what changed, which audience is under pressure, and what to do next.
Solution
Campaign Pulse turns raw demo newsletter data and uploaded CSV exports into a normalized analytics layer with target-aware diagnostics, audience pressure signals, segment movement intelligence, and monthly operating reports.
What I built
One normalized boundary for bundled JSON and flat CSV exports.
Validates synthetic campaign, newsletter, audience, and target facts.
Merges one-newsletter × one-segment rows into the shared model.
Supports inferred aliases, manual overrides, and required-field checks.
Explains invalid rows before a session dataset can be activated.
Reads local files with FileReader; nothing is sent to a server.
Global, campaign, and segment targets persist in localStorage.
On track, watch, and off-track states stay visible in context.
All segments remain comparable while one opens into deeper evidence.
Cadence and newsletter detail share the same operating context.
Contribution, pressure, strongest sends, and next actions in one read.
Print-ready memo and browser-generated JSON/CSV artifacts.
Focused tests, GitHub Actions quality gates, and Vercel configuration.
Architecture / System map
Raw source facts do not contain precomputed rates, rankings, diagnoses, or recommendations. Adapters normalize inputs first; deterministic TypeScript utilities compute the intelligence layer after validation.
Bundled synthetic JSON or a browser-local CSV export.
Mapping, validation, rejection reasons, and normalized entities.
Rates, rankings, pressure, movement, targets, risks, and recommendations.
Overview, Calendar, Newsletters, Campaigns, Audience, Insights, Report, and Data.
Key product screens
The interface is organized as an operating room rather than a generic dashboard. Each workspace answers a different question while preserving the same month, source, target, and detail context.









Data intelligence
Every read is calculated from normalized local facts. The prototype makes formulas and operating thresholds inspectable, repeatable, and testable.
Unique opens ÷ delivered. A top-level read on subject-line and sender response.
Unique clicks ÷ delivered. Measures click depth across the delivered audience.
Unique clicks ÷ unique opens. Separates post-open content performance from reach.
Orders ÷ delivered. Connects newsletter delivery to downstream action.
Revenue ÷ delivered. Compares audience value across sends, campaigns, and segments.
Actual revenue is evaluated against editable global or scoped targets.
Send frequency, overlap, and negative signals expose overexposure risk.
Growing, stable, declining, fatigued, and recovering states add direction.
Invalid source rows stay visible instead of silently disappearing.
Next actions respond to performance and pressure constraints together.
Engineering notes
The build focuses on product architecture, deterministic analytics, adapter design, and interaction quality without introducing infrastructure the prototype does not need.
The implementation workflow also referenced the curated awesome-vibe-coding collection as a development resource. awesome-vibe-coding ↗
Outcome
Campaign Pulse demonstrates product thinking, frontend engineering, data modeling, deterministic analytics, adapter design, and UX iteration in one coherent local-first product surface.
Turns fragmented metrics into explicit operating questions and next moves.
Coordinates dense analytics workspaces without relying on backend complexity.
Separates source rows, normalized facts, computed intelligence, and presentation.
Balances mission-control scanning with deeper calendar, audience, campaign, and report reads.