Build enterprise software on DODIL
Ask your agent to scaffold any of these. Every skill is live-tested end to end — each build uses the DODIL products it needs, provisioned over MCP in minutes.
Enterprise Software
32 skillsCRM & Sales
12 skillsAccount 360
crm/account-360Assemble the CRM relationship graph on one DataK3 bucket — hierarchy + partner/competitor/supplier edges + owned-product edges — then roll up the corporate family, score account health, and rank cross-sell whitespace with a kimi-k2.6 gate.
Campaign to Lead
crm/campaign-to-leadModel campaigns → members → touchpoints on one DataK3 bucket and attribute won-deal revenue back to the campaigns that created it — merge-keyed SQL tables, a linear/first/last/multi-touch split, campaign ROI as one JOIN, an optional graph path for multi-touch, and a Models-assisted influence split.
Core
crm/coreScaffold the CRM master-data core on one DataK3 bucket — five merge-keyed master tables, an account-hierarchy graph (family pipeline rollup), and three VECTOR(2048) dedup/similar-deal tables — the system of record the rest of the CRM suite consumes.
Finserv
crm/finservThe CRM suite reshaped for wealth/advisory — households as the relationship unit, a referral network, AUM + KYC columns, a household/referral graph, and a MEDDIC scorer fronted by a deterministic KYC hard gate. Composes the base suite plus the finserv overlay; no fork.
Lead to Opportunity
crm/lead-to-opportunityStand up the discover → qualify → nurture → convert front door of a CRM on one DataK3 bucket — a discovery warehouse, a cost-gated Models qualify, vector lookalike expansion, lead→opportunity conversion, and a data-driven email sequence engine.
Manufacturing
crm/manufacturingThe CRM suite reshaped for a channel + equipment business — a dealer channel, a deployed install base, territory-weighted dealer edges, and an install-base service/upsell NBA gate. Composes the base suite plus the manufacturing overlay; no fork.
Pipeline Forecast
crm/pipeline-forecastStand up sales-pipeline forecasting on one DataK3 bucket — a data-driven stage model, weighted pipeline, forecast-category snapshots, a family-weighted graph rollup, and an optional AI deal-risk gate. Pure-SQL rollups; the model is the override, not the baseline.
Qualification Scoring
crm/qualification-scoringScore a real lead or opportunity on BANT or MEDDIC with a Models gate — the verdict + per-dimension judgement land in a lead_scores table, and the two-gate qualify/route policy lives as data. One DataK3 bucket, one Ignite app over the CRM masters crm/core owns.
Quote Cpq
crm/quote-cpqStand up a CPQ engine on one DataK3 bucket — products, multi-currency price books, quote lines that reprice idempotently, a discount policy as data, and a kimi-k2.6 discount-approval gate. One Ignite app over the CRM masters crm/core owns.
Real Estate
crm/real-estateThe CRM suite reshaped for brokerage — listings + buyer preferences as first-class objects, buyer↔listing matching over two VECTOR(2048) tables, opportunities repurposed as deals-on-a-listing, and a commission split that sums to gross. Composes the base suite plus the real-estate overlay; no fork.
Saas
crm/saasThe CRM suite turned into a recurring-revenue system — a subscriptions spine, ARR/MRR/seat columns on accounts, a renewal + expansion forecast lane, and product-qualified (usage) qualify gates. Composes the base suite plus the SaaS overlay; no fork.
Crm
suites/crmScaffold a complete, customizable CRM on ONE DataK3 bucket — master data (accounts/contacts/leads/ opportunities/activities) + six workflows (lead-to-opportunity, qualification-scoring, pipeline-forecast, quote-cpq, campaign-to-lead, account-360) + one relationship graph, assembled once. 36 disjoint tables, shared masters joined across skills, no ETL and no second copy.
IT & Operations
10 skillsChange Management
itsm/change-managementChange management on one DataK3 bucket where RISK IS THE BLAST RADIUS — a change request reads the CMDB impact graph (typed reverse traversal) for its blast radius + impacted services, a kimi-k2.6 CAB gate adjudicates {decision, risk, reason}, a deterministic freeze-window floor hard-routes regardless, and the verdict + a change calendar + a policy row land in SQL. The graph's flagship consumer.
Cmdb Blast Radius
itsm/cmdb-blast-radiusAssemble the CMDB graph on one DataK3 bucket — build the reverse, TYPED `impacts` edges from core's ci_edges, snapshot the forward `cmdb` and reverse `cmdb_impact` graphs once, then answer the question a CMDB exists for: "if this CI fails, what breaks?" — a hop-ranked blast radius and an impacted-service rollup, with an optional kimi-k2.6 impact-summary gate.
Core
itsm/coreScaffold the ITSM master-data core + CMDB on one DataK3 bucket — eight merge-keyed tables (cis, incidents, problems, changes, services, users, groups, ci_edges), a typed CMDB dependency graph for blast-radius traversal, and an inline VECTOR(2048) similar-incident index on incidents.embedding — the system of record every other ITSM workflow consumes.
Finserv
itsm/finservThe ITSM suite reshaped for regulated IT change — CIs with a compliance scope + regulated flag, changes with a compliance sign-off + freeze override, an immutable change_audit trail, and a CAB gate fronted by a deterministic compliance HARD GATE (compliance_hold overrides the model on a regulated CI). Composes the base suite plus the finserv overlay; no fork.
Incident Management
itsm/incident-managementIntake -> similar-incident dedup -> auto-triage/classify -> assign -> resolve on one DataK3 bucket. Reads core incidents.embedding for dedup + precedent retrieval and the cmdb_impact graph for blast radius, gates the classification on kimi-k2.6, and lands the verdict in incident_triage + a work-note audit trail — one Ignite engine over the ITSM masters itsm/core owns.
Major Incident
itsm/major-incidentDeclare a major incident from a high-priority ticket and run the bridge lifecycle on one DataK3 bucket — pull the affected CI's TYPED CMDB blast radius (graph_khop over cmdb_impact, filtered to impact_rels, NOT a blanket traversal), roll it up to the impacted business services, open a war-room bridge (open, impacted_ci_count, impacted-services JSON), and track it open -> mitigating -> resolved while the underlying incident advances to resolved. Deterministic composition — no Models gate.
Manufacturing
itsm/manufacturingThe ITSM suite reshaped for operational technology — CIs gain an IT|OT class + site/plant_line, a maintenance_windows table holds planned OT downtime, the blast radius traverses an OT `controls` edge so a failing PLC reaches its production lines (an ot_impact rollup), and the change gate gains a maintenance-window floor. Composes the base suite plus the manufacturing overlay; no fork.
Problem Management
itsm/problem-managementTurn recurring incidents into a root-caused problem record on one DataK3 bucket — cluster related incidents by vector similarity over incidents.embedding, synthesise the root cause with a kimi-k2.6 gate, publish a known-error (KEDB) row, and link a change for the permanent fix. One Ignite engine over the incident/problem/change masters itsm/core owns.
Sla Management
itsm/sla-managementPut SLA policy on one DataK3 bucket and run the clock — a per-priority target matrix (sla_definitions), a per-incident response/resolve clock (incident_sla), and a breach + escalation log (sla_breaches). Pure SQL: deterministic clock math over core.incidents, no Models call — the ITSM counterpart of crm/pipeline-forecast's k3.editor-only engine.
Itsm
suites/itsmScaffold a complete, customizable ITSM on ONE DataK3 bucket — master data + CMDB (cis/incidents/ problems/changes/services/users/groups + ci_edges) plus six workflows (cmdb-blast-radius, sla-management, incident-management, major-incident, problem-management, change-management) + one CMDB graph, assembled once. 23 disjoint tables, shared masters joined across skills, no ETL and no second copy.
Gl
9 skillsCore
gl/coreScaffold the General Ledger master-data core on one DataK3 bucket — the chart of accounts, the account-hierarchy graph (parent/child rollup), and the shared journals / journal_lines / ledger table shapes every GL workflow writes — then post ONE balanced opening-balance journal that seeds the ledger so the trial balance nets to 0.00 from day one. Money is DECIMAL(18,2) (never double); every write is idempotent (INSERT … ON CONFLICT (<pk>) DO UPDATE, or data_table_upsert). The system of record every other gl/* workflow (journal-entry, period-close, financial-reporting, subledger-reconciliation, multi-currency) consumes.
Financial Reporting
gl/financial-reportingProduce the two primary financial statements on one DataK3 bucket — a period P&L (income_statement: revenue - expense = net income) and a balance sheet (balance_sheet: assets = liabilities + equity, including the un-closed current-period net income) — both rolled up by account TYPE over the gl/core account-hierarchy graph (graph_khop from each statement root to its posting leaves) and materialized idempotently. Two pillars, SQL + graph, over one copy of the rows the ledger already holds. Money is DECIMAL(18,2) (never double); the balance sheet TIES to the cent because the trial balance nets to 0.00 — assets - (liabilities + equity + net income) = 0.00. Idempotent write = INSERT ... ON CONFLICT (period, section) DO UPDATE (a bare re-INSERT of a committed report key raises duplicate-key 23505). Pure SQL + graph — no Models, no Ignite handler.
Finserv
gl/finservThe GL suite reshaped for a regulated (SOX-style) close — every journal carries a prepared_by, an approved_by and an approval_state, a journal_approvals trail records every approval transition, and posting is fronted by a deterministic SEGREGATION-OF-DUTIES hard gate (a self-approved or unapproved journal never posts, even when it balances). The period close inherits a sign-off gate: a period cannot close while any journal in it is unapproved. Composes the base suite plus the finserv overlay; no fork.
Journal Entry
gl/journal-entryThe GL correctness showcase — post a balanced double-entry journal to the ledger, exactly once, and reverse it cleanly. Enforce the balance invariant BEFORE posting (reject any journal where SUM(debit) <> SUM(credit)); post idempotently (INSERT … ON CONFLICT (journal_id,line_no) DO UPDATE + a ledger recompute ON CONFLICT (account_id), so a retry / shard replay / at-least-once redelivery posts ONCE, never twice); reverse by a mirror journal (debit and credit swapped, linked by reverses_journal_id) that nets the affected accounts back to zero impact; and write an append-only journal_audit event log. Money is DECIMAL(18,2) (never double); concurrent posters retry on SerializationFailure. Pure SQL over gl/core's accounts / journals / journal_lines / ledger — no Models.
Manufacturing
gl/manufacturingThe GL suite reshaped into a COST-ACCOUNTING ledger — accounts gain a cost_center, the chart of accounts gains Inventory + WIP (assets) and COGS + a Cost Variance/PPV account (P&L), a standard_costs table drives a standard-cost variance journal (inventory booked at standard, the actual − standard variance routed to the P&L, payables at actual — balanced), and inventory flows Inventory -> WIP -> COGS. The balance sheet ties and the trial balance stays 0.00. Composes the base suite plus the manufacturing overlay; no fork.
Multi Currency
gl/multi-currencyRevalue foreign-currency GL balances into the functional currency at period-end, exactly and reversibly. Adds fx_rates (from_ccy+to_ccy+rate_date PK, rate DECIMAL(18,6)) and an fx_reval register (reval_id PK: account_id, ccy, orig_balance, revalued_balance, gain_loss, rate, period) onto the gl/core masters. Take each open foreign-currency ledger balance, compute the unrealized gain/loss = (balance x period-end rate) - (balance x prior rate) rounded to functional cents DECIMAL(18,2), and post a BALANCED reval journal (FX gain/loss vs the account) that reverses next period so the two periods net to 0. Money is DECIMAL(18,2), FX rates are DECIMAL(18,6) (never double); every write is idempotent (INSERT ... ON CONFLICT (<pk>) DO UPDATE, or data_table_upsert) so a re-run of the close never double-posts. Pure SQL — no Models. Consumes accounts/journals/journal_lines/ledger from gl/core.
Period Close
gl/period-closeClose an accounting period on one DataK3 bucket — snapshot the per-account trial balance (grand total must net to 0.00), lock the period with a guarded posting path so no new operational journal routed through the guard can post into it (an enforced-by-convention close lock, not a table-level constraint), and roll net income (Σrevenue − Σexpense) into the retained-earnings equity account with a balanced closing journal that zeroes every P&L account. Pure SQL over gl/core's journals / journal_lines / ledger / accounts. Money is DECIMAL(18,2) (never double); every write is idempotent (INSERT … ON CONFLICT (<pk>) DO UPDATE, or data_table_upsert), so a re-close never double-rolls net income.
Subledger Reconciliation
gl/subledger-reconciliationReconcile an AP/AR subledger to its GL control account on one DataK3 bucket — subledger_items (open bills / invoices carrying a control_account_id) tied out against the control account's ledger balance so the variance is provably 0.00. subledger_items holds the open detail; reconciliation is the per- control-account tie-out snapshot (gl_balance, subledger_sum, variance, reconciled). Pure SQL: a single cross-table JOIN, no Models — the control account's GL balance must equal the sum of its open subledger items to the cent. Money is DECIMAL(18,2) (never double); every recompute is idempotent (INSERT … ON CONFLICT (recon_id) DO UPDATE — a bare re-INSERT of a committed recon_id raises 23505). Consumes the ledger + accounts masters gl/core owns.
Gl
suites/glScaffold a complete, customizable General Ledger on ONE DataK3 bucket — master data (accounts / journals / journal_lines / ledger + account_edges) plus six workflows (journal-entry, period-close, subledger-reconciliation, multi-currency, financial-reporting) and one account hierarchy graph, assembled once. 14 disjoint tables, shared masters joined across every skill, no ETL and no second copy. Money is DECIMAL(18,2), FX rates DECIMAL(18,6); every posting is idempotent (INSERT … ON CONFLICT (<pk>) DO UPDATE). THE canonical suite trial balance is in the FUNCTIONAL currency — foreign-currency ledger balances are converted at the period-end rate — so a multi-currency book nets to exactly 0.00 once revaluation has run.
Retail Vision
1 skillVision Core
retail/vision-coreTurn a retail chain's IP-camera feeds into one analytics system on a single DataK3 bucket — anonymous footfall/dwell/queue (SQL), appearance segmentation + soft re-ID (a VECTOR(2048) table + jina-embeddings-v4), in-store journeys (a zone graph), and loss-prevention + safety events — behind a pluggable detector, a per-camera sampling dial, and an app-configurable, consent-first identity model that is OFF by default.
Enterprise Software — coverage
industry × sub-categoryWhat ships today, honestly. Live cells are proven end to end; every gap is a skill we have not built yet — ask your agent, or request it. Future categories get their own coverage grid.
| Module | Software / SaaS | Marketing & Sales | Manufacturing | Financial Services | Real Estate |
|---|---|---|---|---|---|
| CRM & Sales | live | live | live | live | live |
| Procurement | request it | request it | request it | request it | request it |
| Finance | request it | request it | request it | request it | request it |
| HR & People | request it | request it | request it | request it | request it |
| Customer Support | request it | request it | request it | request it | request it |
| IT & Operations | live | planned | live | live | planned |
| Legal | request it | request it | request it | request it | request it |
| Supply Chain | request it | request it | request it | request it | request it |