Data Foundations Canon — Data Normalization Intelligence Ralph — GTM Agent Campaign Auditor Automation Content Generator
How It Works SCORE YOUR HUBSPOT
CANON · DATA NORMALIZATION · ENGAGEMENT INTELLIGENCE

Clean data,
clear decisions.

A normalization system that runs permanently inside your HubSpot instance. Every contact change is intercepted, cleaned, confidence-scored, and written to canonical fields your scoring models can trust. Human review for anything ambiguous. Full audit trail. No manual cleanup required.

200+
Title variants normalized
0–100
Confidence score per record
18
Canon fields written per contact
0
Manual cleanup required

Your CRM doesn't have a data problem.
It has a trust problem.

Every downstream system in your HubSpot stack is only as reliable as the data underneath it. Lead scoring, territory routing, segmentation, executive reporting. And that data has been accumulating inconsistencies since the first contact was imported.

"VP Mktg."  ·  "v.p. of marketing"  ·  "Head of Marketing Ops"
Three records. Three variations. One person.
Your scoring model treats them differently and nobody knows.

The standard response is a quarterly cleanup sprint. A RevOps person exports a CSV, normalizes manually, re-imports, and hopes the next batch of dirty records doesn't arrive before the campaign goes out. They always do.

Canon fixes this at the source. Not with a cleanup. With a system.

A normalization layer that runs
permanently in the background.

Canon sits between your raw HubSpot data and every system that reads from it. When a contact or company record changes, Canon fires automatically. It normalizes the affected fields, calculates a confidence score, and either writes the clean value directly or queues it for human review inside HubSpot.

The output is a parallel set of canonical fields your scoring models, routing workflows, and reports read from instead of the raw noise: canon_seniority, canon_department, canon_industry, and 15 others.

01 — Trigger  ·  02 — Normalize  ·  03 — Route
01
HubSpot webhook fires on contact or company property change 12 subscribed properties across contacts and companies
02
Canon Engine normalizes + scores confidence (0–100) Pattern matching against 200+ known title variants, canonical industry taxonomy, geography map
03
Two paths based on confidence threshold Score ≥ 85 → auto-accept, write canon_* fields  ·  Score < 85 → queue for human review
AUTO-ACCEPT
Confidence ≥ 85%
Writes canon_* fields immediately. Logged to Supabase.
REVIEW QUEUE
Confidence < 85%
Surfaces in HubSpot app card. Awaits one-click approval.
Canon — Live Flow
→
Raw HubSpot change detected jobtitle: "sr. vp of mktg"
○
Normalization engine runs Match: "sr. vp" → "Senior Vice President"
Dept: "mktg" → "Marketing"
%
Confidence scored: 91 High confidence → auto-accept path
✓
canon_* fields written to HubSpot canon_title: "Senior Vice President of Marketing"
canon_seniority: "SVP"
canon_department: "Marketing"
canon_data_confidence: 91
Low-confidence path
?
jobtitle: "Chief Everything Officer" No canonical match found
!
Confidence: 35 → Review queue HubSpot app card surfaces for human decision

Four things Canon does
that a cleanup doesn't.

01 ——
It runs on every change, permanently.
Not a one-time sprint. Every new import, form submission, and manual edit triggers Canon automatically. Clean data doesn't decay between campaigns.
02 ——
It scores its own confidence.
Every normalization carries a 0–100 confidence score. High-confidence changes apply automatically. Low-confidence ones queue for review. You always know where the engine was confident and where it wasn't.
03 ——
It keeps a full audit trail.
Every suggestion, approval, rejection, and writeback is logged to Supabase. You can see exactly why any field holds the value it does, and who approved it.
04 ——
High-impact fields always require a human.
Industry classification and buyer persona require explicit approval before Canon writes them, regardless of confidence score. These fields don't change without a person in the loop.

What Canon writes
to your HubSpot records.

Raw Input Canon Output Confidence
VP Sales & Marketing Vice President of Sales
95
sr. software eng Senior Software Engineer
92
Acme, Inc. Acme
98
Dir. of Ops Director of Operations
90
SaaS/Technology Technology
71 — review queued
Chief Everything Officer Flagged for review
35

The same database.
Two very different target lists.

A VP outreach list built from raw HubSpot fields versus Canon-normalized fields, in our Meridian Analytics demo portal. Same contacts. Same filter intent. The data quality gap is the only variable. Every number below comes from running the portal’s real job titles through the Canon engine.

BEFORE CANON
AFTER CANON

VP Outreach list build  ·  Meridian Analytics demo portal  ·  100 contacts in database

VP-Level contacts reached

9 of 48 VP-level contacts ( 19% ) jobtitle contains “VP”

39 VP-level contacts would have received nothing — buried in abbreviations, “Head of” titles, and typos

Sample contacts — raw vs. canonical

Raw jobtitle in HubSpot Campaign canon_seniority canon_department

Same 100-contact demo portal as the live scan report below. Real job titles, run through the real engine. No campaign results are shown because no campaign was sent — the list itself is the point.

This is what Canon finds
in a real HubSpot portal.

Before Canon normalizes anything, the scan engine runs read-only against your actual contacts. It surfaces what's broken, scores overall data health, and ranks the issues by downstream impact. The report below is a live scan of our demo portal — real engine, real output, real recommendations.

LIVE REPORT View a live CRM scan report

Read-only access only. Set up together on a call. Your data stays in your HubSpot.

18 clean fields your
other systems can trust.

Contact (11 fields)
canon_job_title canon_seniority canon_department canon_persona canon_email_type canon_lead_source canon_region canon_engagement_score canon_engagement_status canon_data_confidence canon_normalization_notes
Company (7 fields)
canon_industry canon_icp_tier canon_employee_band canon_domain canon_region canon_revenue_range canon_hq_country
Stack
Python FastAPI Next.js n8n HubSpot API v3 HubSpot UI Extensions Supabase

Clean fields tell you who someone is.
Live fields tell you if they're still listening.

Canon's engagement layer scores email engagement nightly and writes what it finds into canonical fields, so decay shows up in the same place your scoring, routing, and reporting already read. No new dashboard. The fields go quiet loudly.

Status bands · days since last email open or click

ACTIVE
Engaged within the last 15 days
AT RISK
15 or more days silent
COLD
45 or more days silent
DORMANT
120 or more days silent
NIGHTLY SCORING

Contacts are rescored overnight from native HubSpot email activity: a 0–100 engagement score, then a status in one of the four bands.

CANONICAL FIELDS

Score and status land in canon_engagement_score and canon_engagement_status from the schema above, with four supporting fields tracking days since engagement, when the score was last calculated, and the source and time of the last re-engagement.

NIGHTLY DIGEST

A summary digest lands in Slack each night, surfacing decay movement. Recoveries the real-time path doesn't cover, like an At Risk contact re-engaging, show up here.

RE-ENGAGEMENT

When a Cold or Dormant contact opens or clicks an email, their status flips back to Active and a Slack alert fires with the contact's context, including the seniority, persona, and ICP tier the normalization engine maintains. This is the one transition that triggers in real time; everything else waits for the nightly run.

HUMAN FOLLOW-UP

The layer stops at the alert. What to do with a returning contact stays with your team.

Review queue, inside HubSpot.
No new tools.

When Canon flags a change for human review, it surfaces directly on the contact or company record in HubSpot as a native app card. Your RevOps or Marketing Ops person sees the raw value, the suggested canonical value, the confidence score, and Canon's reasoning.

One click to approve. One click to reject. The decision is logged either way.

No separate dashboard to log into. No CSV to review. It lives in HubSpot, where the work already happens.

Card states
All items reviewed 3 items pending review
app.hubspot.com — Contact Record
SA
Sarah Albright
Head of Demand Generation · Cloudrift
About Intelligence
Normalization Review
All items reviewed
Approved: 2  ·  Rejected: 0
Powered by Canon-App
1 item pending review
canon_industry
Raw: "SaaS/Cloud Technology"
→ Technology 68
Industry
classification
requires
human review
Powered by Canon-App

We're onboarding a small number
of HubSpot teams into Canon.

Canon is production-ready and running. We're not looking for beta testers. We're looking for the right first clients. Teams where CRM data quality is an active problem, not a background annoyance. Where lead scoring, routing, or reporting is quietly unreliable because the raw fields feeding them can't be trusted.

Early access is not self-serve. It's a guided rollout with direct support while we sharpen the product against real portals.

What early access includes
→ Initial CRM health scan on your actual HubSpot data, not a questionnaire
→ Canon property setup and workflow connection to your portal
→ Normalization configured for your core contact and company fields
→ Human review queue activated inside your HubSpot instance
→ Direct support throughout rollout. Not a help desk ticket.
→ Founding pricing, locked before we raise rates
WHO IT'S NOT FOR Enterprise orgs with 6-month procurement cycles. Teams without a clear HubSpot owner. Anyone looking for a self-serve tool they can set up in an afternoon.
Apply for early access
We'll review your application and follow up within 2 business days.
Not ready for early access? Start with a free CRM health score. No HubSpot access required.

Canon is the foundation everything else runs on.

Clean fields mean your lead scoring model works. Routing rules fire correctly. Campaign segmentation hits the right people. Reports reflect reality. Canon doesn't replace those systems. It makes them reliable.