Granger
by Mirror Factory
Platform Status Report — March 22, 2026
Granger is your AI Chief of Staff. It connects every tool you use into a single context layer, then deploys intelligent agents that understand what's happening across your business. This report covers the current state of the prototype, what's been built, what's next, and an honest assessment of risks.
All 3 phases (9 sprints) are 100% complete. In 17 days of development, we shipped a full-stack application with 71 features across 16 categories, backed by 819 unit tests and 16 E2E specs.
The product includes Ditto personalization, self-service signup with Stripe subscriptions, a spatial canvas workspace, 8 active integrations, and an AI pipeline processing content from every connected tool.
Next milestone: Production deployment and first external teams. All code complete — manual setup needed for Supabase, Stripe live keys, and Inngest Vercel integration.
All 9 sprints shipped. Ready for production deployment and external teams.
0
Lines of Code
0
Source Files
0
API Routes
0
App Pages
0
UI Components
0
Unit Tests
0
E2E Specs
0
AI Eval Suites
0
DB Migrations
0
Commits
17 days from first commit to prototype complete · 0 TODO/FIXME markers in codebase · 41 production dependencies
71 features across 16 categories. Every feature listed below is implemented, tested, and pushed to GitHub.
Ingest from anywhere — files, integrations, and webhooks
Drag-and-drop PDF, DOCX, TXT, and Markdown. Auto-detects meeting transcripts vs documents.
Google Docs, Sheets, Slides exported as text + uploaded PDFs and Word files downloaded and parsed. Push notifications with 24h watch renewal.
Issues + comments, projects, and cycles via GraphQL. HMAC-SHA256 webhook verification. Up to 500 items per sync.
Public channel messages (up to 20 channels, 200 messages each). Messages batched per channel with author attribution.
Guild messages with incremental batching. Ed25519-verified webhooks. Up to 5 guilds, 10 channels each.
Repository issues with metadata (status, labels, assignees). Up to 10 repos, 15 issues each.
Meeting transcripts with attendees via webhook daemon + pull sync. Token-verified payloads.
Connect any tool via MCP servers with OAuth PKCE, bearer tokens, or no-auth. Handles tool discovery and authentication.
7-step Inngest-orchestrated pipeline — extract, chunk, embed, and link
Claude Haiku via AI Gateway extracts title, summaries, entities, sentiment, and executive summary using Zod schemas.
Parent-child strategy (~400/1500 tokens) with smart break-point detection at paragraph, sentence, and word boundaries.
1536-dim via text-embedding-3-small. Chunk-level and item-level embeddings with batch processing.
AI matches new content against active sessions by topic similarity. Deduplicates against existing links.
Inngest handles 7 steps with concurrency=10, 3 retries, non-blocking execution.
Versioning, staleness detection, and health monitoring
Every content change creates a version snapshot. View timeline, compare versions, track who changed what and why.
SHA-256 content hashing with field-level diff. Skips re-processing when nothing changed. Metadata-only updates skip AI re-embedding.
Content-type-specific thresholds (messages: 30d, issues: 14d, docs: 90d). Health score 0-100 with freshness breakdown.
Slack and Discord messages bucketed weekly. Old weeks preserved as searchable items. No data loss on re-sync.
Vector + full-text search with Reciprocal Rank Fusion
pgvector HNSW index + PostgreSQL tsvector merged via RRF for best-of-both ranking.
Item-level matches whole docs. Chunk-level matches specific passages for precision at scale.
Search restricted to session-linked documents. Prevents cross-project contamination.
If embeddings unavailable, falls back to text-only. If chunks fail, falls back to items. Always returns results.
AI assistant that queries your entire knowledge base
ToolLoopAgent with search_context and get_document tools. Synthesizes answers across sources.
Claude Haiku/Sonnet/Opus, GPT-4o, Gemini. Switch per conversation based on task complexity.
Every answer shows which documents were used with relevance scores. Click through to verify.
Create, rename, and delete separate threads. Session-scoped chat for project focus.
Scoped project workspaces with context and chat
Create sessions, manually link docs via picker modal, or let AI auto-link by relevance.
Each session has its own chat and sidebar showing linked documents with source badges.
Add or remove session members. Control who can see and interact with each workspace.
AI-generated priorities and extracted action items
Claude Haiku analyzes content to generate prioritized items (urgent/high/normal/low) with deduplication.
Extracted from every document. Status tracking (pending/done/cancelled) with ownership and due dates.
Connect any tool via MCP servers with real-time sync
Google Drive (Docs, Sheets, Slides, PDFs, DOCX), Linear, Discord, Slack, GitHub, and Granola. Each with real-time webhooks and background sync.
MCP-powered integrations with automatic tool discovery, OAuth PKCE authentication, and real-time data access.
SSE-powered progress during manual sync — fetching phase, per-item processing with progress bar, elapsed time, and completion summary.
Manual 'Sync Now' trigger for immediate refresh, or let background sync keep data fresh automatically. Webhook-driven ingestion triggers AI pipeline.
Per-integration configuration — choose which channels, folders, repos to sync. File type filters, message limits, bot exclusion.
Deduplication prevents duplicate processing on webhook retries across all providers.
Google Calendar and Notion are planned. Any MCP-compatible server can be added instantly from the registry.
Stripe-powered credit system
100 ($9.99), 500 ($39.99), 2,000 ($129.99). Role-gated purchasing (owner/admin only).
Handles checkout completions, subscription changes, payment failures. Credits added automatically.
Track AI operation history with period toggle (today/week/month). Breakdown by operation type and model. Token counts, credit costs, and estimated USD.
Real-time credit balance display in sidebar navigation. Yellow warning at <50 credits, red at <10 with 'Upgrade' prompt.
Automatic credit deduction on every AI call — chat (1), extraction (2), embedding (0.5). 402 response when insufficient. Per-item deduction during sync.
KPI dashboard with health metrics
Pipeline success rate, embedding coverage, extraction quality with pass/warn/fail thresholds.
Search utilization, error rates, latency. Every chat request logged with model, tokens, duration.
Per-provider webhook delivery stats — success rate, last received, avg/day. Alerts when a provider goes silent for 24+ hours.
Knowledge base health score (0-100). Freshness breakdown (fresh/aging/stale/very-stale), per-source and per-type metrics, stale items list with action recommendations.
Multi-tenant with RLS, audit logging, and role-based access
All 15 tables protected. Members only see their org's data. Verified webhook signatures per provider.
Owner/admin/member roles, email invitations, profile settings, paginated audit log.
Edit org name, view stats (members, items, integrations). Danger zone with typed-confirmation delete for owners only.
Per-org tier-based rate limits — free (50/hr), starter (500/hr), pro (5000/hr). Standard X-RateLimit headers. 429 with retry-after.
HMAC-SHA256 for Linear, Ed25519 for Discord, Stripe signature verification. Idempotency dedup prevents duplicate processing.
Trust weighting, annotations, feedback, and personalization
Set per-source trust levels (0.1-2.0). Higher-trust sources rank higher in search. Org defaults with personal overrides.
Add custom titles, notes, and tags to any content. Never overwritten by sync — your edits stay separate from source truth.
Thumbs up/down on AI responses with reason picker (wrong answer, wrong source, outdated, missing context).
Save search queries with filters as named quick-access chips. Share with team or keep personal.
819 unit tests, 16 E2E specs, 5 AI evals
819 unit tests across 43 files via Vitest. 16 Playwright specs covering auth, dashboard, API smoke, user journeys, onboarding, billing, settings, production smoke.
Extraction quality, retrieval (P@5, MRR), agent behavior, performance benchmarks (p50/p95/max), context health KPIs.
GitHub Actions: typecheck + lint + test on every PR. Husky pre-commit hooks. Zero TODO/FIXME in codebase.
Morning digest, notification preferences, and email delivery
Morning email summarizing new content, action items, and overdue tasks. Generated via cron at 7 AM. Preview available in-app.
Per-user settings: toggle daily digest, mention alerts, action item alerts, new context alerts, weekly summary. Custom digest delivery time.
Preview your morning digest in-app before it sends. See exactly what would be emailed with real data from the last 24 hours.
63 API endpoints, keyboard shortcuts, command palette, and export
Comprehensive API across 13 categories — chat, context, sessions, inbox, integrations, billing, settings, analytics, webhooks. Full docs at /api-docs.
Cmd+K opens 20 navigation commands with keyword search. Quick actions: upload document, new session, connect integration.
? opens shortcut reference. G+H/C/S/I/A for two-key navigation. Shortcut hints in command palette.
Export context items, sessions, or search results as Markdown or JSON. Download files with proper formatting and metadata.
Title templates on all 32 pages, Open Graph tags, robots noindex until launch. Custom error and 404 pages.
Chat and session workspace sidebars collapse to slide-out drawers. Consistent padding, horizontal table scroll, responsive grids across all pages.
AI-powered insights and cross-source connection discovery
AI-generated insights surfaced in session workspace — new content alerts, cross-source connections, contradictions, action items. Dismiss or pin per insight.
AI finds relationships between items from different sources. Types: supports, contradicts, extends, updates, depends_on. Auto-generates session insights.
Interactive entity chips on context detail pages — people (blue), topics (purple), decisions (amber), projects (green). Click to search across library.
Save search queries with filters as named quick-access chips in the context library. Share with team or keep personal.
9 sprints · March 5 — June 5, 2026
Mar 5-8
Auth, DB, ingestion pipeline, context library UI
Mar 9-11
4 integrations, hybrid search, chat with tools
Mar 12-15
Inbox, actions, sessions, team management, Stripe billing, analytics
Mar 17
Credit deduction, usage logging, rate limiting, webhook hardening, E2E expansion.
Mar 17
Notification preferences, SEO, mobile polish, API docs expansion, daily digest.
Mar 17
Session insights, cross-source connections, org settings, saved searches, export.
Mar 19
Per-user AI agent with learned preferences.
Mar 19
Public signup with plan selection. First external team.
Mar 22
Spatial canvas workspace. Final QA. Launch prep.
Not yet deployed to production
All code complete; manual Supabase/Stripe/Inngest setup remaining
E2E tests haven't been run against a live environment
16 specs written and committed; need test credentials configured
Single developer — bus factor of 1
Comprehensive docs + 713 tests make onboarding easier
No Sentry or external monitoring yet
Scheduled for Sprint 6
P2 End (Sprint 6)
3/3 team members
Internal DAU
P2 End
500+ ingested
Context Items
P3 End (Sprint 9)
3-5 onboarded
External Teams
P3 End
First paying customer
Revenue
6 real-world walkthroughs showing how teams use Granger day-to-day — from morning briefings to weekly reviews.
View Use CasesGranger v0.1.0 — Mirror Factory
156 issues shipped · 122 commits · 33,002 lines of code · 819 tests passing
Built by Alfonso Morales · Report generated March 17, 2026