NarrativePulse — GA4 + Google Ads CSV to Executive Report in 60 Seconds
Agencies spend 3 hours per client writing the same 'traffic was up, ROAS improved' paragraph every month. NarrativePulse turns a GA4 export and Ads CSV into a polished 500-word executive narrative with wins, insights, and recommendations — no copy-paste hell required.
Difficulty
beginner
Category
Business Automation
Market Demand
High
Revenue Score
7/10
Platform
Web App
Vibe Code Friendly
⚡ YesHackathon Score
🏆 8/10
Validated by Real Pain
— sourced from real community discussions
Agency account managers report spending 2-4 hours per client per month writing executive narrative summaries from GA4 and Ads data — a repetitive task they believe should be automated.
What is it?
Every digital agency writes monthly client reports, and every account manager dreads the blank page moment after exporting the CSVs. NarrativePulse is a single-page web app where you drag in two CSVs, hit generate, and get a board-ready narrative in under 60 seconds. The output is structured: executive summary, 3 key wins, 2 concerns, and 3 recommendations — all in the agency's brand voice. Agencies currently cobble this together with ChatGPT prompts, Notion templates, and sheer willpower. This is 100% buildable today: Claude API handles the narrative, Stripe handles billing, and the whole thing ships as a Next.js single-pager with no backend complexity.
Why now?
Claude 3.5 Sonnet's long context window can handle full GA4 CSV exports in a single prompt, which was not cost-effective before May 2025 pricing drops. Agencies are actively hunting for reporting shortcuts after Google Analytics 4 made manual reporting 40% harder.
- ▸Dual CSV upload for GA4 and Google Ads with instant column auto-detection.
- ▸Claude-powered 500-word executive narrative with configurable tone and brand voice.
- ▸One-click copy-to-clipboard and PDF download of finished report.
- ▸Report history dashboard showing all generated reports per client.
Target Audience
Digital marketing agencies with 5-50 clients, approximately 80,000 agencies in the US alone.
Example Use Case
Sarah, an agency owner managing 18 clients, uses NarrativePulse every month to generate all 18 reports in 90 minutes instead of 3 days, saving 22 hours of account manager time per month.
User Stories
- ▸As an agency account manager, I want to upload two CSVs and get a client-ready narrative, so that I stop spending 3 hours writing the same report every month.
- ▸As an agency owner, I want to view all past generated reports in a dashboard, so that I can track what was sent to each client.
- ▸As a billing admin, I want to upgrade to unlimited reports via Stripe, so that my team is not blocked mid-month by a report limit.
Done When
- ✓CSV Upload: done when user drags in two files and sees column preview without any manual mapping.
- ✓Report Generation: done when user clicks Generate and sees a 400-600 word narrative in under 15 seconds.
- ✓PDF Export: done when user clicks Download and a formatted PDF opens in a new tab with report content intact.
- ✓Paywall: done when a user who has used 3 free reports sees an upgrade prompt and cannot generate until Stripe checkout completes.
Is it worth building?
$99/month x 50 agencies = $4,950 MRR at month 3. Realistic: 50 paying agencies at $99/month acquired via LinkedIn DMs at 8% conversion from 625 outreach messages.
Unit Economics
CAC: $25 via LinkedIn DMs (1 hour per 20 DMs, 8% conversion). LTV: $891 (9 months at $99/month). Payback: 1 month. Gross margin: 87%.
Business Model
SaaS subscription
Monetization Path
Free trial gives 3 reports, then $99/month unlimited. Upgrade triggered when trial limit hit.
Revenue Timeline
First dollar: week 2 via LinkedIn beta. $1k MRR: month 2. $5k MRR: month 6.
Estimated Monthly Cost
Claude API: $50, Vercel: $20, Supabase: $25, Stripe fees: ~$30. Total: ~$125/month at launch.
Profit Potential
Full-time viable at $5k–$10k MRR with 50-100 paying agencies.
Scalability
Medium — can expand to white-label reports, Looker Studio integration, and agency team seats.
Success Metrics
Week 1: 50 signups from LinkedIn DMs. Week 2: 10 paid conversions. Month 2: 80% retention.
Launch & Validation Plan
DM 30 agency owners on LinkedIn with a free report offer. Collect 10 completed reports to prove quality before charging.
Customer Acquisition Strategy
First customer: DM 20 agency owners on LinkedIn offering 3 free reports, no card required. Ongoing: ProductHunt launch, r/PPC and r/digital_marketing posts, cold email sequences to agency owner lists.
What's the competition?
Competition Level
Low
Similar Products
Whatagraph for automated reporting (no narrative), AgencyAnalytics for dashboards (no narrative), ChatGPT (no structure, no CSV parsing). NarrativePulse fills the gap: structured narrative output from raw CSVs, purpose-built for agencies.
Competitive Advantage
Purpose-built for GA4 + Ads combo, 80% cheaper than agency copywriters, ships in under 60 seconds vs. 3 hours.
Regulatory Risks
GDPR: GA4 CSV data may contain EU user aggregates — store only temporarily and delete after report generation. Low overall risk.
What's the roadmap?
Feature Roadmap
V1 (launch): CSV upload, Claude narrative, PDF export, Stripe paywall. V2 (month 2-3): brand voice settings, client name templating, report history. V3 (month 4+): team seats, Looker Studio push, white-label PDF.
Milestone Plan
Phase 1 (Week 1): upload, generate, and display narrative working end-to-end. Phase 2 (Week 2): Stripe paywall live, PDF export done, Supabase history. Phase 3 (Month 2): 10 paying customers, collect retention data.
How do you build it?
Tech Stack
Next.js, Claude API, Stripe, Supabase — build with Cursor for backend logic, v0 for the upload UI, Lovable for the report display component.
Suggested Frameworks
Anthropic SDK, Papa Parse for CSV parsing, React Dropzone
Time to Ship
1 week
Required Skills
Claude API prompt engineering, CSV parsing with Papa Parse, Stripe Checkout.
Resources
Anthropic prompt engineering docs, Papa Parse docs, Stripe Checkout quickstart.
MVP Scope
app/page.tsx (upload UI + generate button), app/api/generate/route.ts (Claude API call + CSV parse), app/api/checkout/route.ts (Stripe session), app/dashboard/page.tsx (report history), lib/parse-csv.ts (Papa Parse logic), lib/prompt.ts (Claude prompt template), lib/db/schema.ts (Supabase reports table), components/ReportCard.tsx (rendered narrative), .env.example (API keys), seed.ts (demo GA4 + Ads CSV files).
Core User Journey
Upload CSVs -> hit generate -> read narrative -> download PDF -> pay for unlimited.
Architecture Pattern
User uploads CSVs -> Papa Parse parses in browser -> Claude API generates narrative -> Supabase stores report -> PDF rendered client-side -> Stripe gates unlimited usage.
Data Model
User has many Reports. Report has one CSVPayload and one GeneratedNarrative. User has one Subscription.
Integration Points
Claude API for narrative generation, Stripe for payments, Supabase for report storage, Papa Parse for CSV parsing, Vercel for hosting.
V1 Scope Boundaries
V1 excludes: team seats, custom brand voice training, Looker Studio integration, scheduled auto-generation, white-label.
Success Definition
A paying agency owner generates their full monthly client report batch without emailing the founder once.
Challenges
Distribution is the real wall — agencies are loyal to existing workflows and need to see a live demo before paying. Cold LinkedIn outreach at scale is the only reliable Day 1 channel.
Avoid These Pitfalls
Do not build a full dashboard before validating the core generate button. Do not over-engineer CSV column detection — start with fixed GA4 export format only. Finding first 10 paying customers will take longer than building — budget 3x more time for DMs than coding.
Security Requirements
Supabase Auth with Google OAuth, RLS on reports table, CSV data deleted after 24 hours, rate limit 20 generates per hour per user, GDPR deletion endpoint.
Infrastructure Plan
Vercel for Next.js, Supabase for Postgres and auth, no file storage (CSVs parsed in browser), GitHub Actions for CI, Sentry for errors. Total infra: ~$45/month.
Performance Targets
100 DAU at launch, Claude API target under 8 seconds per report, page load under 2s, no caching needed at MVP scale.
Go-Live Checklist
- ☐Security audit complete.
- ☐Payment flow tested end-to-end.
- ☐Error tracking (Sentry) live.
- ☐Monitoring dashboard configured.
- ☐Custom domain set up with SSL.
- ☐Privacy policy and terms published.
- ☐5+ beta agencies signed off.
- ☐Rollback plan documented.
- ☐Launch post drafted for LinkedIn and ProductHunt.
First Run Experience
On first run: a demo GA4 CSV and Ads CSV are pre-loaded with sample e-commerce data. User can immediately click Generate and read a real sample narrative. No manual config required: demo CSVs are bundled in the repo, Claude API key loaded from env.
How to build it, step by step
1. Define API schema: POST /api/generate accepts {ga4Csv, adsCsv} returns {narrative}. 2. Scaffold Next.js app with npx create-next-app. 3. Install Papa Parse, Anthropic SDK, Stripe SDK. 4. Build CSV upload UI with React Dropzone using v0. 5. Write Claude prompt template in lib/prompt.ts targeting GA4 and Ads columns. 6. Build /api/generate route that parses CSVs and calls Claude. 7. Set up Supabase reports table and save generated output. 8. Add Stripe Checkout with usage gate after 3 free reports. 9. Build report history page with download button. 10. Verify: upload real GA4 CSV, generate report, hit pay wall, complete Stripe checkout, access unlimited.
Generated
May 8, 2026
Model
claude-sonnet-4-6
Disclaimer: Ideas on this site are AI-generated and may contain inaccuracies. Revenue estimates, market demand figures, and financial projections are illustrative assumptions only — not financial advice. Do your own research before making any business or investment decisions. Technology availability, pricing, and market conditions change rapidly; always verify details independently.