# Maplith for finance

How the AI agent a finance team already uses finds the invoice that never matched its quote, the invoice still waiting for payment and the refund nobody booked — each workflow a before and after, shown on fictional companies’ exports.

Finance closes the books from what other systems hand it: the quote from sales, the refund from the shop, the payment from the bank. Where two of them disagree, the ledger still balances — and the error sits in the space between. Your agent can find it — if it knows where each figure lives, how far to trust each join and whether it may act. Maplith gives it exactly that; your agent acts in your systems with your credentials.

LinguaNord ApS is a fictional translation agency built as our first test company: the company, its people, its customers and its translators are all invented, and nothing in the data comes from any customer.

Fjeldrev Outdoor ApS is a fictional web shop built as a test company: the company, its people and its customers are all invented, and nothing in the data comes from any customer.

## Between the systems

Recurring problems between the ledger and the systems that feed it. Each was raised by a scan of a worked example’s exports.

- **Invoices keyed by hand.** The invoice is typed from the quote, not generated from it, and no invoice carries its project — so an amount that drifts from the quote shows up nowhere. (LinguaNord ApS · raised by a scan of its exports.)
- **Refunds paid, never booked.** The shop pays the refund; the credit note waits for a batch that does not come. (Fjeldrev Outdoor ApS · raised by a scan of its exports.)
- **Foreign currency booked at face value.** In the worked example three orders paid in euro were booked in the ledger as the same number of kroner. A scan raised it as a finding, with the orders, the postings and the meeting where it was put off. (Fjeldrev Outdoor ApS · raised by a scan of its exports.)

## Workflows

Three workflows from two worked examples. Each shows what an agent has to do without Maplith, and the pieces it uses instead. Everything on this page ships today.

### Invoices that never matched the quotes

Invoices are typed by hand from the quote, and some amounts drift from it.

**Without Maplith.** The invoice is typed into the ledger from the quote, not generated from the project system, so the amounts drift. In the worked example no invoice carries its project, so nothing in either system shows which invoice belongs to which quote; the finance meeting names three mismatches in May, and the exports hold more. An agent without a map has to pull both exports, guess the match by customer name and amount, and start again next month.

**With Maplith:**

1. **Findings** — A scan of the exports raises it as a finding: the invoices and quotes it compared, the meeting where the mismatch came up, and a recommendation. `list_findings` returns it.
2. **Signals** — When a person approves the suggested fix of a finding, `list_signals` returns a `fix_approved` signal and `get_task_context` gives the finding and its fix, so an agent polls for its work instead of re-reading the map.
3. **Task context** — `get_task_context` returns the objects it concerns, the join path between them with how well it holds, the open findings on them and what was done the last time.
4. **The map** — The map marks the join from project to invoice as weak: the invoice’s project field is empty in every row, so the agent treats a match as the caveat says rather than as fact.
5. **The action gate** — `request_action` for an operation the business declared — for example, opening a task for whoever sends the invoices — decided by the key’s policy.
6. **Record and value** — `record_action` writes what was done, so the next task context on the same thing shows it.

Worked example: [LinguaNord ApS](/industries#linguanord).

### Invoices sent with no payment received

Some invoices are still open, and the reminder has to find the right person in another system.

**Without Maplith.** The ledger knows which invoices are open; it does not know who to remind. The customer’s contact sits in another system, under a name the ledger spells its own way. In the worked example some invoices have a sent date and no payment after it. An agent without a map has to decide what counts as late with nothing to compare against, then find the contact by guessing how the ledger’s customer name matches the others.

**With Maplith:**

1. **Processes** — `get_process` for the invoice returns its happy path from the dates in the exports — sent, then payment received — with the median time between the steps, and every variant that deviates, including the invoices that stop after sent. An open invoice is late against the business’s own median, not a guess.
2. **Route** — `route` from the invoice to the customer’s contact says which system holds each and by which key — and that the hop from invoice to customer is weak, because the ledger names the customer in free text. The agent reads the contact in that system with its own credentials.
3. **Ask** — `ask`: “where do I find the contact for an invoice’s customer, and what should I not rely on?” — answered from the map with the objects and joins it rests on, never from rows.
4. **The action gate** — `request_action` to send a reminder, if the business declared that operation: allowed, pending a person, or denied, by the key’s policy.
5. **Record and value** — `record_action` writes what was sent, so the next task context on the same thing shows it.

Worked example: [LinguaNord ApS](/industries#linguanord).

### Refunds paid, never booked

The shop pays a refund; the ledger never gets the credit note.

**Without Maplith.** The procedure says the credit note is booked the same week as the refund. In the worked example the bookkeeper books refunds in batches when there is time, and four refunds paid in the shop — DKK 3,396 in all — have no credit note in the ledger, though the ledger runs weeks past the last of them. The shop and the ledger each look complete on their own.

**With Maplith:**

1. **Findings** — A scan of the exports raises it as a finding: the refunds with no credit note, the procedure step they break, the chat where the batching is admitted, and a recommendation.
2. **Signals** — When a person approves the suggested fix of a finding, `list_signals` returns a `fix_approved` signal and `get_task_context` gives the finding and its fix, so an agent polls for its work instead of re-reading the map.
3. **Task context** — `get_task_context` returns the objects it concerns, the join path between them with how well it holds, and what was done the last time.
4. **The action gate** — `request_action` to book a credit note, if the business declared that operation: the business decides per key whether a person approves each one. Maplith never books it; the agent does, in the ledger, with the business’s own credentials.
5. **Record and value** — `record_action` writes what was booked, so the next task context on the same thing shows it.

Worked example: [Fjeldrev Outdoor ApS](/industries#fjeldrev).

## The pieces

| Piece | Tool | What it gives the agent | Status |
|---|---|---|---|
| The map | `get_object` | Where each thing lives and how the systems join, with the rate Maplith measured for every join it could test. | live |
| Findings | `list_findings` | Where the systems disagree, raised by a scan of the exports — each with the evidence it rests on and a recommendation. | live |
| Processes | `get_process` | How the work actually flows, from the dates in the exports: the happy path, the time between steps, and every variant that deviates. | live |
| Signals | `list_signals` | What needs doing, as typed events to poll instead of re-reading the map. | live |
| Task context | `get_task_context` | A single call with everything a signal needs, including the playbooks and what the key may do. | live |
| Ask | `ask` | One question in plain language, answered from the map with citations — never from rows. | live |
| Route | `route` | The shortest verified join path from a start object to a target: which system, which key, how much to trust each hop. | live |
| The action gate | `request_action` | Allowed, pending a person, or denied — before the agent acts, with a grant good once. | live |
| Record and value | `record_action` | What was done, so the next judging does not raise it as though nobody had looked — and counted in “What you got”. | live |

## The worked examples

- **[LinguaNord ApS](/industries#linguanord)**, a translation agency. The findings and processes quoted from it come from a recorded scan of its exports. There is no public map or key for it.
- **[Fjeldrev Outdoor ApS](/industries#fjeldrev)**, a web shop selling outdoor gear. The findings quoted from it come from a recorded scan of its exports. There is no public map or key for it.

Every department: [Solutions](/solutions). The worked examples: [Worked examples](/industries).
