cpg-category-analyst
I spent seven years at Daasity building analytics services for CPG brands. Before that I ran Red Fox Analytics, doing the same work by hand — pulling syndicated data from Nielsen, SPINS, or Circana, normalizing it, building competitive sets, generating decks. This is how I’d build Red Fox if I were starting today. Same skeleton — semantic layer at the core, pre-approved templates, knowledge before generation — just without the fifty engineers.
Claude Code · dbt Core · DuckDB · Snowflake · MARP
How it works
Drop a raw CSV from Nielsen, SPINS, or Circana into a Claude Code session. The system runs an intake interview, detects the data source, maps columns, and transforms everything through a three-layer architecture into competitive analysis reports and branded slide decks.
Three layers, each doing one job:
Data layer— dbt Core transforms raw exports through staging, unified, and mart models. Runs on DuckDB locally or Snowflake when you need scale. This is the part that turns messy vendor CSVs into something queryable.
Query layer— shared SQL templates that work against either backend. Distribution, velocity, share, pricing — the standard metrics every category review needs. Backend-agnostic so you can develop locally and deploy to a warehouse without rewriting anything.
Skill layer— thirteen Claude Code skills across data pipeline, analysis, and output. This is where the judgment lives — competitive grids, story mining, pricing analysis, deck generation. The skills know what good category analysis looks like because the templates encode that knowledge.
RAW DATA Nielsen · SPINS · Circana exports
detect source, map columns, validate
──────────────────────────────────────────────────────
DATA LAYER dbt Core — staging → unified → marts
(dbt Core) DuckDB local / Snowflake production
[adjustable: add models, redefine KPIs]
──────────────────────────────────────────────────────
QUERY LAYER shared SQL templates, backend-agnostic
distribution · velocity · share · pricing
[swap config per client or category]
──────────────────────────────────────────────────────
SKILL LAYER 13 skills — pipeline, analysis, output
competitive grid · story mining · pricing
distribution gaps · trend analysis · ...
──────────────────────────────────────────────────────
OUTPUT ┌────────────────────────────────────┐
│ category-review-deck [MARP slides] │
│ competitive-grid [analysis] │
│ sales-stories [narratives] │
└────────────────────────────────────┘What Daasity taught me
The architecture is basically what I worked on at Daasity for two years, stripped down to the parts I’d actually use. At Daasity I was CPO, building NL2SQL and semantic layer tooling for CPG and DTC brands. The core insight was always the same: you need a structured knowledge layer between raw data and generated output. Skip that layer and the LLM hallucinates metrics. Build it and the LLM becomes a competent analyst.
The semantic layer here — brand mappings, competitive set definitions, threshold configs, category hierarchies — is the same concept. Pre-approved templates mean the system generates analysis it already knows how to structure. Knowledge before generation. That principle came directly from watching what went wrong when you skipped it.