Build the numbers.
Show the workings.
DataCrafter is a self-hosted workbench for the data behind your reports. Load it, model it, classify it, aggregate it and publish it as one repeatable run you can explain afterwards.
A general-purpose MI platform, and a companion to regulatory reporting.
Management information (MI) is the reporting a business runs on itself: the numbers that go to a board pack, a desk head, a client or a committee. That is what DataCrafter is built to produce, whatever your subject matter. It has no opinion about your industry and no built-in chart of accounts.
Where you also file regulatory returns from a reporting tool, DataCrafter can sit alongside them rather than replacing them. It prepares, classifies and aggregates the data a return is built from, and gives you the same numbers for internal use. Your filing tool still does the filing.
We are deliberate about that boundary. A full regulatory reporting system needs deeper audit and control features than DataCrafter has today, and we are building towards them. Until they land, calling it a reporting companion is the accurate description.
Every report is the end of a chain you built on purpose.
Raw data comes in as it is. You shape it through steps that are objects in their own right, each one saved, versioned and re-runnable. Nothing is a script someone wrote once and left behind.
Register and load
Point at a table you already have, or load one from Excel, CSV or another database. DataCrafter can own the table or just read it.
Model and join
Declare how your sources fit together once. Every downstream step reads that model instead of rebuilding the joins by hand.
Classify and aggregate
Sort rows through a condition tree into your own taxonomy, then group and measure them. Chain the steps into a pipeline that checks itself.
Explore and explain
Open any model in the online viewer, download a report as live Excel or value-locked, or build your own analytics in a worksheet with the add-in.
Report and orchestrate
Produce a tabular extract or a full spreadsheet report, then wire the whole thing onto a workflow canvas and run it on a date.
Each step is an object you can open, edit and re-run.
You compose the platform from the modules you actually need. They all read the same data model, so adding the next one never means rebuilding the last.
Where DataCrafter connects
A named connection to one of your databases - PostgreSQL, Oracle or embedded H2. Credentials are held separately and encrypted at rest.
Where the rows live
A table in one of your databases. DataCrafter can manage it, register one that already exists, or evaluate a live query on read.
Getting data in
Fills a Data Source from an Excel or CSV file, or from another table. Re-run it for a new date and you get a new instance, not a mess.
How sources fit together
A join specification across one or more Data Sources, authored once and read by everything downstream.
Extra columns, no forking
Overlays additional nodes and fields onto a Data Model without touching it, so one shared model can serve several jobs.
Realistic test data
Manufactures rows against a model to a shape you specify - volumes, distributions, null rates. Build and test a chain before the real feed arrives.
Your taxonomy, applied
Sorts every row through a tree of conditions you author. Deepest match wins. The output is tags beside your data, never a copy of it.
Grouping and measures
Group by any dimension with SUM, COUNT, MIN, MAX, AVG, variance, weighted average and distinct counts. Sub-totals roll up correctly.
A chain that checks itself
An ordered run of classifiers and aggregations. DataCrafter reads how the data really flows and refuses an order that contradicts it.
Flat extracts
A straight tabular report over a data model, written out to CSV or Excel on a schedule or on demand.
Real spreadsheet output
A grid of cells whose formulas pull governed values from your models. Export as static values or as live formulas that recalculate in Excel.
The orchestrator
A canvas of nodes wired together. Runs loaders, pipelines and reports in order, in parallel where it can, and stops where it should.
On the way
Designed and specified, not yet shipped. They hold their place in the module tree so you can see where the product is going.
Capture and correct
Hand-entered data and adjustments through a form you author, written back down the same governed path as everything else.
Checks and findings
Standing checks over a model that raise findings rather than fail a run - data quality, outliers and rule breaches in one place.
The escape hatch to code
Hands a step to an external runtime - Python first, any language by design - and takes the result back as an ordinary generated model. For the work SQL genuinely cannot express. Runs out of process, with no access to your credentials.
An assistant that knows the product, and drafts with you.
Most of the cost of a tool like this is the learning curve, and most of the rest is typing. DataCrafter's assistant is aimed squarely at both. It is a usage copilot: it knows DataCrafter, not your industry, and it never pretends otherwise.
Ask what a thing does, where you are.
The assistant knows which object your active editor holds, so questions are answered in context rather than in general. It is grounded in DataCrafter's own documentation: the object types, the editor fields, the rule and formula grammars, and what actually happens when you run something.
? why did this run finish with a warning
? what is the difference between EQUAL and LATEST
Describe it, then review what it drafted.
On a blank Data Source, Data Model or Data Generator editor, describe what you want and the assistant drafts the whole object. On a populated one, it edits what is already there. The result opens unsaved in the editor for you to check and change, and saves through the same chokepoint as anything you typed by hand.
match the primary keys, left outer join,
filter to UK customers
Suggestions you can accept or throw away.
The Data Generator editor proposes field-value rules from the input model's schema, validated by the generation engine itself before they reach the grid. Failed runs and SQL Console statements get an Explain button that stages an editable question rather than firing one blindly.
It authors content, never structure it cannot know.
The assistant will not guess keys, join columns or indexes - the choices where a confident wrong answer is worse than no answer. Everything it drafts is validated server-side (types, naming rules, reference resolution) before you see it, and every answer surface takes a follow-up question.
Three ways in. One server behind them.
Analysts, reviewers and spreadsheet people do not want the same tool. They should still be looking at the same numbers.
Desktop client
A native application for the people who build and run the work. Full editors, live spreadsheet authoring and a bundled mini-Excel for offline sheets.
Browser client
Zero-install access for reviewers and occasional users. Same server, same objects, same results, nothing to deploy to a laptop.
Excel add-in
Pull governed values straight into a worksheet with a retrieval formula, then build the analysis and charts you want on top. The workbook stays a workbook, the numbers stay under control.
Answering for a number starts long before anyone asks.
If a figure you publish can be questioned by a regulator, a client or an auditor, the controls have to be part of how the work is built, not a report you write afterwards.
-
Versioned in Sets
Every object you author belongs to a Set. Copy the whole Set to branch a body of work, with or without its data, and point the copy at a different database.
-
Runs are repeatable
A run is tied to an as-of date and its instance keys. Re-run the same tuple and it overwrites cleanly, so last month stays last month.
-
Dependencies are tracked
Objects know what they depend on. Change something upstream and the platform marks what is now in doubt instead of letting it drift quietly.
-
Access is granular
Users, groups and per-Set permissions, with database credentials encrypted at rest and an audit log of what was changed and by whom.
-
Move work between environments
Export an object with everything it references, then import it into test or production with conflicts shown before anything is written.
-
Testable like software
Pin the behaviour you rely on and find out when it changes. Tests are workflows, run in the editor or as a build gate - the testing framework below.
Sign-in you can tighten, on a server you control.
DataCrafter is self-hosted, so the boundary around your data is one you draw. These are the controls you get inside it, and what each one is actually worth.
Two-factor sign-in
Codes from any authenticator app. A user can switch it on for themselves, and an administrator can require it for a whole group. Enrolling issues eight one-time recovery codes for the day a phone goes missing, and repeated wrong codes lock the factor for a few minutes rather than letting a guess run.
Passkeys
Sign in with Windows Hello, Touch ID or a security key. A passkey is tied to your server's own hostname, so a lookalike site cannot use it - that is the whole point of them. It satisfies the two-factor requirement by itself, because unlocking it already proved both possession and identity. In the browser client today.
Keys for machines, not passwords
The Excel add-in and any other caller sign in with a revocable key, so nobody types a password into a spreadsheet. The key is shown once and only its hash is kept. Each one carries its owner's permissions and nothing more: it cannot enrol a second factor, reset one, or mint another key.
HTTPS with your certificate
Serve the whole thing over TLS, either directly or behind a proxy that terminates it. That is a configuration setting, not a rebuild. Passkeys and the Excel add-in both require it - the browser's rule and Office's rule respectively, not ours.
Secrets are not kept in the clear
Passwords and recovery codes are hashed with PBKDF2-HMAC-SHA256, so nothing can read them back. Database credentials and AI provider keys are encrypted where they are stored, and the server strips provider keys out of anything it hands to a client.
The security actions are logged
Sign-ins and refusals, permission changes, second factors enrolled and reset, keys minted and revoked - each one a named event that says who did it. Resetting somebody else's second factor is the classic way around two-factor, so it is permission-gated and recorded like one.
Your reporting chain can have a regression suite.
Reporting logic is software, and it breaks the way software breaks: quietly, upstream, months after anyone touched it. The Application Test Framework lets you pin the behaviour you rely on and find out the moment it changes, instead of finding out from the number.
A test is a workflow, not a script.
You build a test out of the same objects you build everything else from, with two extra kinds of node: build nodes that construct what the test needs, and assert nodes that check the result. The engine that runs your month-end close is the engine that runs the suite, so the framework cannot drift away from the thing it is testing.
→ BuildAggregation → AssertRowCount → TeardownTestSet
Row counts, result sets, whole reports.
Compare a count or a full result set against a stored expected one, check that an object exists with the storage type you expect, count the instances a run produced, or diff a generated report file against the file it should have produced. A failed assertion does not stop the run, so one pass tells you everything that is wrong rather than the first thing.
AssertObjectExists · AssertInstanceCount
AssertReportOutput · AssertConsistency
Twenty-one invariants you did not have to write.
One assertion node runs a library of checks against the objects and their runs: that every layout reference still resolves, that instance key tuples are unique, that dates are stored in the canonical format, that a single-instance source really has no as-of date. Point it at one test Set or at everything you have.
LAYOUT_REF_RESOLVES PASS
DATES_IN_ODBC_FORMAT PASS
In the editor, from a script, or as a build gate.
Run it from the Workflow Runner and watch the nodes colour in, with an Assertions tab listing every check beside its expected and actual values. Drive it over REST from whatever you already script with. Or run it headless, where the exit code decides whether the build passes.
--datacrafter.ci.run-workflow=MonthEndClose
echo $? # 0 pass · 1 fail · 2 not found
Teams who have to stand behind what they publish.
Reporting teams
Turn a pile of source extracts into the same set of outputs every cycle, without rebuilding the plumbing each month.
Risk and finance
Classify and aggregate positions against your own hierarchies, then produce the same numbers to management and to the regulator.
Data teams under review
Replace the spreadsheet-and-script layer that nobody wants to inherit with objects that are saved, permissioned and re-runnable.
An Australian software company building the tool we wanted.
DataCrafter is built by DataCrafter Software Labs Pty. Ltd., an Australian owned software company.
Our founders and directors have multiple decades of experience in software development and in regulatory reporting tools. Long enough to have worked around the same gaps often enough to want to close them properly.
That background is why the product is shaped the way it is. It is self-hosted rather than a tenancy, because the people we build for cannot hand their data to someone else. Every step is an object you can open, re-run and hand to a colleague, rather than a script nobody wants to inherit. And we would rather tell you plainly what it does not do yet than describe a product that does not exist.
Tell us what you have to produce.
If you are wrangling source extracts into reports that somebody checks, we would like to hear what that looks like today. DataCrafter is in active development and we work closely with the people trying it.
DataCrafter · Australia
See it running
A public instance you can sign in to and use in the browser. It is being sandboxed before it opens - worth a look at what it will show.
A shared sandbox. Ask us if you would like early access.