The log of every decision we’ve shipped.
Velocity shows up in the weekly log, not the quarterly deck. Every shipped capability, ordered by date. 20 releases and counting.
April 2026
12 releasesNamed by Gartner and IDC in 2024 DI vendor assessments
Diwo is now listed in two of the most consequential Decision Intelligence vendor assessments of the year — Gartner's Market Guide for DI Platforms and the IDC MarketScape: Worldwide Decision Intelligence Platforms 2024 Vendor Assessment.
- Listed as a Representative Vendor in Gartner's Market Guide for Decision Intelligence Platforms
- Named in the IDC MarketScape: Worldwide Decision Intelligence Platforms 2024 Vendor Assessment
- Alongside peers shaping the DI category — including Palantir, SAS, FICO, IBM, Aera, Quantexa
- Launched the /research page: analyst citations plus seven essential reads on the DI shift
Catalyst Dashboards
Pin any card from any conversation onto a curated dashboard, then generate an AI-written executive briefing from it. The story your team needs to see, in one place.
- Pin metric, chart, table, and insight cards from any Catalyst conversation
- AI briefing endpoint synthesizes a structured summary (executive summary, key findings, recommended actions, data highlights) from pinned cards
- Dashboards are per-use-case, editable, and preserve card snapshots so the briefing doesn't drift
- Briefings regenerate on demand when underlying conversations evolve
Analyzed recommendations + thread reuse
Recommendations now remember which ones you've already explored — and clicking a repeat recommendation reopens the existing conversation instead of starting a new one.
- Green checkmark on analyzed recommendation cards, tab counts reflect only unanalyzed
- Repeat clicks on the same recommendation reopen the existing thread — no duplicate conversations
- Inline rename for conversation titles and individual user messages (pencil on hover → inline edit)
- Cache invalidation on decision creation so navigating back reflects the updated state
Catalyst Agent Framework — plugin-style inbound & outbound
A plugin architecture that snaps into your existing systems. Inbound agents keep the data layer fresh; outbound agents push decisions into Slack, CRM, ERP, and custom destinations — under a deterministic, typed contract.
- Inbound agent slots: schema metadata refresh, market-signal pollers, user-action listeners
- Outbound agent slots: Slack notifier, Salesforce task create, ERP push, email dispatch, Microsoft Teams, Webhook Dispatcher (HMAC-signed, retried with jitter, logged)
- Deterministic execution — every agent runs a narrow typed contract, not open-ended reasoning
- High-impact actions require named human approval before firing
- Every inbound refresh and outbound dispatch is appended to the per-decision audit trail
Enterprise-grade visualization
Every chart, metric, and insight card rebuilt for executive eyeballs. 14 chart types, zoom and fullscreen controls, rich metric tiles with sentiment context, and tabbed insight views.
- Migrated to ApexCharts — 14 chart types, zoom/pan/selection/reset/fullscreen toolbar
- Rich metric cards — icon + sentiment arrow + contextual comparison (vs. prior period, vs. target)
- Insight cards — tabbed view (Data · Observations · Evidence) with markdown support
- Smart value formatting inferred from axis labels (currency, percent, integer, decimal)
- IntersectionObserver defers chart render until in view — no more blank charts
Decision Flows — multi-step data pipelines
Write business rules in plain English, and Catalyst structures them into a repeatable decision pipeline. Each click runs a curated SQL + synthesis flow end to end.
- Rule-first input — type numbered business rules, click Generate, Catalyst derives the step sequence
- Each flow step reuses the production SQL generator + response synthesizer — no bespoke one-off code
- Multiple published flows per use case, each with its own generated recommendations
- Role-gated flow authoring via a dedicated `can_create_flows` capability
- Full audit trail — every step's SQL, retry history, and synthesis is logged against the decision
Recommendation Pipeline
The landing page now surfaces ranked recommendations grouped by category — the high-leverage questions your team should be asking this week, generated from your schema metadata.
- LLM-generated recommendations per use case, ranked by category and severity
- Category-first navigation with mini-card rows, priority dots, hover-reveal impact and value
- One-click dive from recommendation to full conversation, pre-loaded with the underlying question
- Per-use-case regeneration with optional `force` override
- Decision tracking — every analyzed recommendation writes to the audit trail
Real-time chat with streaming answers
Full Catalyst chat UI live — centered landing input, streaming responses, card-based artifacts for every answer. Built on native WebSocket with auto-reconnect.
- WebSocket-based streaming pipeline — tokens arrive as they're generated
- Claude.ai-inspired layout — centered landing greeting, full-width conversation, no sidebar clutter
- Card registry — every answer returns metric, chart, table, insight, or action cards
- Auto-reconnect with backoff, connection status hidden on the happy path
- Per-user connection limits enforced server-side
Natural-language data engine — BYO database + 5 LLM providers
Ask your data anything in plain English. Catalyst translates to safe SQL, executes against your connected database, validates every card against a Pydantic schema, and returns structured answers.
- Agent pipeline — IntentClassifier → SQLGenerator → ResponseGenerator → VisualizationExpert
- Bring your own database — MySQL and PostgreSQL connections with introspected schema metadata
- Bring your own LLM — OpenAI, Anthropic, Google/Gemini, Groq, and Ollama (privacy-sensitive deployments)
- Per-tenant model + credential configuration with Fernet-encrypted keys
- Output schema validation on every card before it reaches the user
v2.0 — Diwo Decision Intelligence goes GA
A full rebuild of the Decision Intelligence platform is now generally available. Production live at decide.diwo.ai, dev and prod branches split, auto-deployed on DigitalOcean App Platform with Cloudflare in front.
- Complete refactor of the platform — new engine, new UI, new security posture
- Dedicated dev + prod branches with auto-deploy pipelines
- Production deployment: Dockerized API + web on DigitalOcean App Platform
- Cloudflare-proxied DNS at decide.diwo.ai
- 679+ passing backend tests, 97 REST endpoints + 1 WebSocket, 31 database models
Security hardening pass
Full CVE cleanup, production security headers, rate limiting on sensitive endpoints, and Dependabot on auto-watch.
- Replaced python-jose with PyJWT — eliminated 4 CVEs in one swap
- Production security headers: HSTS, CSP, Referrer-Policy, Permissions-Policy
- Rate limits via slowapi: auth 5/min, refresh 10/min, AI endpoints 20/min
- Dependabot configured on pip + npm with weekly cadence
- API docs hidden in production builds; XSS hardening on markdown rendering
Bring your own LLM
Customers with data-residency or model-governance mandates can now route every Diwo invocation through their own model provider account — with credentials stored encrypted at the tenant level.
- Five first-class providers: OpenAI, Anthropic, Google / Gemini, Groq, Ollama (local)
- Per-tenant AI settings with Fernet-encrypted API keys
- Seven configurable prompt templates per tenant — override the defaults for every Diwo agent
- Admin UI with provider/model selectors, key management, and prompt editors
- Compliance-aware fallback chain: tenant config → tenant AI settings → environment default
March 2026
8 releasesDynamic roles & capability-based permissions
Admin / Analyst / Viewer is out. Roles are now first-class tenant resources with explicit capability flags — define a role per tenant, assign users per use case, and gate every action through a named capability.
- New `Role` model with eight boolean capability flags per tenant
- Four default roles seeded per tenant: admin, editor, analyst, viewer
- User-to-use-case assignments replace flat tenant-wide access
- Endpoint guards migrated to `require_capability("can_edit_configs")`-style dependencies
- Admin panel with full role CRUD — create custom roles, toggle individual capabilities, see user counts per role
Strategy sharing
Share any saved strategy with another analyst — so the retention lead, the pricing lead, and the segment lead can all iterate on the same what-if scenario instead of rebuilding it.
- Per-strategy share dialog with user search and share/unshare in one click
- "Shared with me" filter tab on the Strategy Library
- Recipients see who shared, when, and can load the strategy into What-If to iterate
- Share events are logged; revocation is one click
Notification Center
New opportunities surfaced overnight, strategies shared with you, decisions landed in your inbox — one place to see what changed while you were away.
- Derived notifications — no new model, just aggregations over opportunities + shared strategies
- Bell badge in TopNav and sidebar with unread count
- Dedicated `/notifications` page with per-item read tracking
- Dashboard hero surfaces shared-strategy count inline
- "Mark all as read" clears the queue in one action
Session management + pluggable auth
Short-lived access tokens with refresh-token rotation, replay detection, device-level session management, and a pluggable AuthProvider ABC ready for SAML and OIDC.
- 15-minute access tokens + 7-day refresh tokens with SHA-256 hashed storage
- Refresh-token rotation on every use — any replay revokes the whole family
- `AuthProvider` abstract base class + registry for pluggable providers (SSO-ready)
- Frontend refresh queue mutex — concurrent 401s share one refresh attempt, silent retry after
- Session warning dialog at T-5 minutes with Extend / Sign Out actions
- Password change revokes all sessions and auto-logs the user out everywhere
Storytelling report — AI-narrated, printable
Every opportunity now has a shareable narrative report. AI-generated executive summary, strategy comparison, segment analysis, entity-level deep dives, and experiment charts — all on a print-ready A4 layout.
- Seven-section report: cover, executive summary, strategy overview, segment analysis, entity deep dives, remaining entities, experiment charts
- AI executive summary with headline, key insight, strategic narrative, action hint
- Entity group deep dives with static D3 experiment charts for the top five
- Print-optimized CSS — page breaks, A4 sizing, hidden interactive chrome
- Standalone `/reports` listing page and per-opportunity "View Report" link
Declining portfolio mode
When the opportunity is a KPI decline rather than an uplift, the UI shifts tone. Amber recovery palette, "Recovery Analysis" language, and strategy framing built for stop-loss decisions.
- Client-side direction resolution from config — direction flips UI tone automatically
- Amber palette throughout: opportunity cards, What-If chart, KPI panel, strategy save dialog
- Three-group opportunity split: positive · declining · attention
- Recovery-focused language: "Current Decline" · "Implement Recovery" instead of "Lift" / "Implement"
- Diwo Recommendation card reframes the ask in recovery terms
Per-opportunity AI narratives
Every opportunity gets a three-column AI panel — What it is · Why it matters · What to do — written freshly against the opportunity's current metrics and segments. Not a dashboard tooltip; a strategic read.
- Three-column layout: What / Why It Matters / Actions, each with a lightweight icon card
- Narrative rewrites when the opportunity's underlying data hash changes
- Strict prompt rules — never repeats card metrics, never fabricates numbers, focuses on "why now"
- Fallback narrative is strategic, not metric recitation
- Enable per-use-case via the `enable_opp_narratives` UI layout toggle
AI-assisted strategy validation
Save a strategy and Diwo immediately validates it against real KPI computation, then suggests two or three alternative constraint configurations that could improve the outcome. No more "save and wonder."
- Three-phase Save Strategy dialog: idle → loading → AI suggestion cards
- Suggestions compute real lift against the opportunity, not a hallucinated estimate
- `strategy_type: "ai_assisted"` tags the provenance so filters can isolate AI-suggested strategies
- Violet "AI-Assisted" theme in Strategy Library filter tab and strategy cards
- Backend endpoint `POST /whatif/ai-validate` does the Claude call + KPI computation in one pass
Get the changelog in your inbox.
One email, every other week, every shipped decision. No marketing, no noise.
