Appearance
Changelog
Real system updates. Not marketing.
2026-07-28 — Contact Address Correction
- Contact mailbox corrected: v3.1 fixed the contact domain (
ai4love.org→ai4love.ca) but pointed toinfo@ai4love.ca, a mailbox that does not exist. The monitored address is hello@ai4love.ca, and the Requests & Contact page now says so. If you emailed info@ and heard nothing back, that is why — resend to hello@ and we will respond.
2026-07-22 — Trust Center v3.2: Data Custody Model Correction
This release retires the "Zero Custody" claim and replaces it with an accurate two-store model: Bounded Custody plus Owned Copy. The previous framing implied AI4Love holds no independent store of your data at all. That stopped being true once the working base existed to run nightly analysis — and continuing to call it "Zero Custody" was the wrong kind of marketing, not an accurate description of the system.
- Bounded Custody — the working base: AI4Love operates a dedicated Airtable working base per organization, held in AI4Love's own account, that holds the normalized supporter, activity, insight, and workflow records nightly analysis requires. It exists only while your service is active, plus a 90-day exit window after cancellation — during which you can request reactivation, a full export, or immediate deletion — after which it is deleted. This is real custody, and this page now says so directly instead of claiming otherwise.
- Owned Copy — the organization mirror: A nightly publisher job writes people, activity, and insight records — write-only, records only, no formulas or automation — to a file your organization owns outright in its own workspace (Google Sheets for most clients). You can revoke AI4Love's write access at any time. This file survives cancellation permanently; it is yours regardless of what happens to your AI4Love relationship.
- Source systems unchanged: Blackbaud, Mailchimp, and Environics remain read-only and are never modified — this was true before and remains true now.
- Updated throughout: Overview, Data Handling, System Architecture, MCP Access Model, Security Controls, Failure Modes, and Requests & Contact pages have been revised to reflect the two-store model — including the data-flow component list, connection tables, retention tables, permission scoping, and recovery guarantees.
2026-07-21 — Trust Center v3.1: MCP Accuracy Correction
This release corrects several claims on the MCP Access Model and Security Controls pages that no longer matched what the code actually enforces. We'd rather publish an accurate, more cautious page than a confident, stale one.
- MCP tool count and scope: Corrected from "19 read-only tools" / "21 read-only tools" to the current, verified count — 42 tools for authenticated clients (3 diagnostic + 31 supporter/intelligence/research tools + 8 visual-scene tools), of which 40 are read-behavior only. The remaining 2 are narrowly gated write tools —
add_to_kindmind(curated research → Pinecone, allowlisted curator orgs only) andmark_campaign_refined(organization-scoped Generated Campaign metadata → Airtable). Neither writes supporter source data. Previous versions of this page claimed MCP was entirely read-only; that stopped being accurate once these two tools shipped, and the trust center wasn't updated to reflect it until now. - MCP rate limiting claims removed: Previous versions published specific numbers — 60 requests/minute per key, a 5,000 records/24h daily cap, and automated anomaly detection. None of these are currently enforced in application code. We've replaced the specific (incorrect) numbers with an accurate statement: individual tools apply their own response bounds, but no fixed per-key quota or anomaly detection exists today.
- MCP audit log fields corrected: Previous versions claimed logs include "records returned" and "response time." The actual log entry contains tool name, org ID, auth type/error code, result status, and timestamp — no record counts, no response times, no credentials, no response bodies.
- Data minimization framing corrected: Previous versions described MCP as applying a single "allow-list filter" that blocks all undeclared fields, including new ones, across every tool. In practice, most tools hard-code the fields they render (a real, effective projection), but
get_schemaandexport_supportersare intentionally broader —export_supportersin particular accepts a caller-specified field list and is not currently constrained to a fixed allow-list in code. This page now calls that out directly instead of implying uniform filtering. - Airtable credential model corrected: Previous versions described a formal Airtable "Service Account" with "Editor" collaborator permissions. The actual model is a scoped Personal Access Token or provisioned service credential issued per organization; write restrictions are enforced by application code, not an Airtable-native permission tier.
- Data residency claims simplified: Removed specific infrastructure details (Vercel region codes, a described "self-hosted Nango deployment managed by AI4Love") that were more specific than what's actually configured by default. Canadian residency remains available for Airtable (Enterprise plan) and Nango (self-hosted); confirm specifics during procurement.
- Vercel log retention corrected: From "1 hour (Pro plan)" to the accurate default — Vercel Pro retains runtime logs for one day, with longer retention available via Observability Plus or Log Drains.
- Contact domain corrected: From
support@ai4love.orgtoinfo@ai4love.ca, matching the domain actually used across the codebase and outbound mail.
2026-04-13 — MCP Enrichment & Hallucination Guardrails
- MCP tool count: 19 → 21. Added
get_supporter_by_id(record ID lookup) andlist_campaigns(browse generated campaigns). - Supporter name enrichment: All MCP data tools (
get_donations,list_volunteers,list_engagements,get_participation, all 6 insight tools) now resolve linked record IDs to human-readable"Name <email>"format via batch People lookups. - Event name resolution: Participation records now resolve
event_idlinked fields to event names. 551 historical records backfilled. - Action generator validation: New
validateActionData()post-parse validator runs on all four action types (campaign, message, thank-you, re-engagement) in both streaming and non-streaming paths. Strips invented supporters by cross-checking emails against input data. Corrects hallucinated counts. Verifies recipient identity. Runs server-side before response reaches frontend or Airtable. - Prompt guardrails expanded: All four action generator system prompts now include CRITICAL rules prohibiting fabrication of supporter counts, names, emails, and dollar amounts.
- CI fixes: Backend test glob fixed for Node 20. axios vulnerability patched via npm overrides (>=1.15.0).
2026-04-10 — Trust Center v3.0
- Content Integrity Policy (v2026-04-07) — All AI generation (agents + campaign generator) now constrained by a published policy prohibiting fabrication of any facts not present in provided data. Policy hosted at ai4love-policies.vercel.app, fetched at runtime, cached 10 minutes.
- v2 Agent Architecture — Agents 1-5 rebuilt with prefetch proxy pattern: Make.com pulls queue, backend pre-fetches full supporter timelines from Airtable, sends to Claude in one call. No MCP at generation time. Agent 6 writes insights server-side via
/api/agent-proxy/direct. - Insight Verification — New
/api/verify-insightendpoint compares AI-claimed metrics (total_donated, participations, days_silent) against actual Airtable data. Writes verification status (verified/mismatch/unverifiable) back to each insight record. - Cost Logging — Per-run cost breakdowns (Anthropic tokens + USD, estimated Make.com operations) written to Engine Logs table for full audit trail.
- Archived Insight Filtering — All surfaces (MCP tools, dashboard queries, agent inputs, KindMind enrichment) now filter
{status} != "Archived". Prevents v1 insights (67% hallucination rate) from resurfacing. - Model Upgrade — All agents and campaign generation migrated to claude-sonnet-4-6.
- Campaign Generation Guardrail —
generateAction.jsnow prepends Content Integrity Policy to all Claude system prompts. Prevents fabricated beneficiary names, programs, or outcomes. - Security — Patched lodash prototype pollution and code injection vulnerabilities. 3 remaining alerts are upstream in @nangohq/frontend → axios chain (low practical risk on Vercel).
2026-03-25 — Trust Center v2.6
- Published Trust Center as the canonical security reference
- Documented allow-list field filtering for MCP and agent prompts
- Added daily retrieval cap (5,000 records/key/24h) to MCP safeguards
- Clarified Service Account Access Token model for Airtable connections
- Added data minimization section for LLM sub-processor path
- Documented incident response timelines (4h containment, 72h notification)
- Added SIEM streaming option for forensic-grade log retention
2026-03-24 — Performance
- Reduced dashboard load time from 20–30s to 3–5s via parallel Airtable calls and query optimization
- Eliminated O(n^2) lookups in supporter list rendering
2026-03-22 — Security Hardening
- Patched high-severity vulnerabilities in rollup, undici, underscore dependencies
- Added browser globals to ESLint configuration
2026-03-20 — Agent Optimization
- Parallelized Airtable API calls in agent processing
- Added streaming to insight generation for reduced timeout risk
- Added PRIZM and Varonics enrichment fields to MCP tools
2026-03-07 — Auth Migration
- Migrated authentication from Authsignal to Clerk
- Implemented invite-only access model
- Added two-layer auth: Clerk identity verification + AI4Love JWT session
Entries reflect meaningful system changes. Routine dependency updates and minor UI fixes are tracked in git history but not listed here.