Skip to content

Platform

Built so that every number can be traced back to something someone verified.

WorkKit is a self-hosted platform that hosts many products. Authentication, TLS, logging, monitoring, backup and deployment are solved once; each product is a module that inherits them. Proposal generation is the first.

Design properties

What is true of the platform today

Each of these is a property of the code as it currently stands, with the evidence behind it. Anything not yet demonstrated is listed further down instead.

Business rules first, AI second

The knowledge base supplies the facts. A deterministic engine does the arithmetic in integer paise. The model writes prose and never originates a number.

The model never touches money

Integer paise, Decimal quantities, ROUND_HALF_UP, no floats anywhere in the path. GST is split correctly into CGST/SGST or IGST by place of supply.

Lookup by identity, not similarity

Rates are retrieved by exact id, not by embedding distance. "Why did it quote that rate?" has a one-line answer instead of a plausible neighbour.

Every module deploys, versions and rolls back on its own

A module declares its routes, resources, quotas, health and backup surface in one manifest, and gets TLS, identity, logging, metrics and restore from the platform instead of rebuilding them.

Tenant isolation, verified against a live database

A request with no tenant identity is rejected rather than defaulted. One tenant cannot read another tenant's work.

How WorkKit works

Three layers, and a strict rule about which one is allowed to do what

A language model asked to total a quotation will occasionally be wrong, will be wrong plausibly, and the error ends up in a document someone signs. So it is never asked.

What it does

Holds rates, equipment specifications, installation processes, assumptions and exclusions as versioned entries, each recording its source and verification date.

What it never does

Never infers. A document with no link to a project stays unfiled rather than being filed under the nearest plausible one.

The pipeline

Four stages, and a strict rule about which one is allowed to do what

Facts flow one way. Nothing downstream can invent something the stage above it did not supply.

  1. Knowledge

    supplies facts

    Rates, equipment specifications, processes, assumptions and exclusions as versioned entries. Each records its source and when it was last verified.

    Loader and schema built. The base is being extracted from real project documents.

  2. Proposal Engine

    does arithmetic

    Quantities, discounts and GST computed in integer paise — including the CGST/SGST versus IGST split — by a tested engine that no model touches.

    Built and tested. Waiting on verified rates to price against.

  3. AI Assistant

    writes prose

    Receives the already-computed figures as read-only context and writes the scope narrative around them. Never originates a number or a piece of equipment.

    Deliberately not connected. The deterministic path has to work first.

  4. API

    exposes it

    The same interface a partner would use. WorkKit’s own front end is its first external consumer, which is what keeps the public API honest.

    Not built. Needs the gateway — no module is exposed until it exists.

Module contract

The interface every product implements

Four requirements. Meeting them is what buys a module its operations for free, and it is what keeps a second product from becoming a second server.

One manifest per module

A module declares its name, version, routes, resources, quotas, health endpoint, metrics path and the volumes that must be backed up. The platform reads that file — nothing reaches into the module.

Independent lifecycle

Each module deploys, versions and rolls back on its own. A bad release in one does not require a coordinated rollback of anything else, and modules are forbidden from depending on each other directly.

Inherited operations

TLS, identity, structured logging, metrics collection, nightly backup and restore come from the platform. A new product is a module, not a server.

Restore is part of done

A module is not finished when it works. It is finished when its backup archive restores into a clean container, unattended, without anyone watching.

Current state

What is not finished

The proposal pipeline is verified either side of the model call, against a live PostgreSQL — migrations, quota enforcement, tenant isolation, storage and read-back all confirmed. The generation step itself has not yet run end to end, and the document template that ships today is a placeholder written to exercise the pipeline. It is expected to be replaced wholesale once real proposals have been extracted.

There is no public API and no developer platform, because the gateway that would authenticate one does not exist yet. The knowledge base is empty by design: every entry currently in it is a draft or a template, and strict mode refuses all of them rather than serving an unverified rate into a document a client signs.

This page will grow as those clear. It will not grow before.