Finance · Self-hostable

Company context for finance operations.

Reconcile payment sources against the ledger, explain any variances, and prep the reconciliation note.

Try Lobu
Connects to
DiscordGitHubGmailGoogle CalendarGoogle ChatHacker NewsLinearMicrosoft TeamsPostgreSQLProduct HuntRedditRSS / AtomSlackTelegramWhatsApp CloudX (Twitter)YouTube+5 more
03/LOBU RUN ]

One company layer, in 4 steps.

See how ledger history, transactions, reconciliations, and sign-off connect without rebuilding context each run.

01

Connect your company.

Connectors stream your databases, SaaS tools, files, devices, and internal APIs into context. Your systems of record stay where they are. Models, sandboxes, and devices are independent layers, credentials gateway-side. Flip the tabs to wire each one.

Connectors ↗
Payment, refund, and settlement changes feed finance memory.
feed · event → shared memoryentity
charges
update3 refunds settled post-cutoffnow
customers
update3 refunds settled post-cutoffnow
payouts
update3 refunds settled post-cutoffnow
02

Turn activity into governed context.

Raw events resolve into people, customers, projects, policies, and goals, with the relationships between them. Every fact from the connectors above converges on the right record, carries its provenance, and is read under the caller's permissions.

Memory ↗
memory
Finance owner
idPK
full_name
team
Ledger account
idPK
owner_idFK
balance
Transaction
idPK
account_idFK
amount
Reconciliation
idPK
account_idFK
variance
03

Deploy Automations that watch and act.

A trigger — a schedule, or reactive to connector events — plus a plain-language prompt. Once defined it runs unprompted: scans memory, matches the trigger, and surfaces the work with the evidence attached.

Automations ↗
automation
triggers⏱ ScheduleDaily · 7:00 AM⚡ On event3 refunds settled post-cutoff
prompt

Each morning, reconcile every against and . When a explains a variance, attach it and ping the before close.

@ connector@ entityReferences resolve to the sources and types you defined above.
04

Use it from any agent.

ChatGPT, Claude, and Codex connect over MCP; Slack, Teams, and WhatsApp over chat; your own apps over the API. Same context, same permissions, whoever's asking. Consequential work arrives as a proposal you review, edit, and approve.

Platforms ↗
#finance-digestAccount 4100
lobujust now

Variance flagged · Account 4100

  • $12,480 variance vs payouts
  • 3 refunds settled after cutoff
  • Same 3-day lag as September (STR-44)

Drafted the month-end recon note for Maya. Review before I post it:

Draft · recon note
Account 4100 variance of $12,480 is explained by merchant STR-44 — three refunds settled after cutoff on the same 3-day lag we saw in September. Recommend close with the note attached.
03/TWO WAYS IN ]

Bring any agent. Add shared context.

Use the agents your team already trusts. Managed agents are optional.

Start here

Bring your agents

Connect ChatGPT, Claude, Codex, OpenClaw, or any MCP client to the same company context, scoped to each user.

Connect an agent →
Optional runtime

Build a managed agent

Run repeatable work from live events or schedules under the same approval policy.

Build a managed agent →
04/UNDER THE HOOD ]

One control plane. Any agent.

Share context, permissions, approvals, and connected actions with any agent. Add Lobu's runtime only when you need it.

Halftone figure: multi-socket plug bank
Halftone figure: stacked storage drives
Halftone figure: vacuum tube in a ceramic socket
Halftone figure: sealed glovebox isolation chamber
Halftone figure: balance scale with calibration weights
Halftone figure: freight container on a crane hook
Halftone figure: oscilloscope with waveform
01·CONNECTORS

Plug into everything.

22+ connectors (Slack, GitHub, Gmail, Linear, Postgres and more) stream events in, and actions flow back out under scoped identities. Anything with an API fits the connector SDK.

For engineers

The same agent, in code.

The use case above is one project: connections, entity types, automations, and agent configuration. Inspect each piece or let your coding agent generate it.

lobu.config.tslobu.config.ts
import {
  connectorFromFile,
  defineAgent,
  defineConfig,
  defineSkill,
  defineEntityType,
  defineRelationshipType,
  defineAutomation,
  every,
  secret,
  field,
} from "@lobu/cli/config";
import type QuickBooksTransactionsConnector from "./quickbooks-transactions.connector.ts";

const reconciliationMonitorSkill = defineSkill({
  name: "reconciliation-monitor",
  content:
    'Check accounts for unreconciled transactions, new variances, and approaching reporting deadlines. Return actionable exceptions in `alerts` as standard observation event drafts. Put the readable exception in `content` and counts/details in `metadata` with `kind: "reconciliation_alert"`. Return an empty array when there is nothing to review.\n',
});

const finance = defineAgent({
  id: "finance",
  skills: [reconciliationMonitorSkill],
  name: "finance",
  description:
    "Help finance teams reconcile data, explain variance, and prepare reporting runs",
  dir: ".",
  providers: [
    {
      id: "anthropic",
      model: "claude/sonnet-4-5",
      key: secret("ANTHROPIC_API_KEY"),
    },
  ],
  network: {
    allowed: [
      "github.com",
      ".github.com",
      ".githubusercontent.com",
      "registry.npmjs.org",
      ".npmjs.org",
    ],
  },
});

// entity types and relationships defined here…

const reconciliationMonitor = defineAutomation({
  agent: finance,
  slug: "reconciliation-monitor",
  name: "Reconciliation monitor",
  triggers: [every("0 6 * * 1-5")],
  tags: ["finance", "reconciliation", "daily"],
  minCooldownSeconds: 3600,
  outputs: { alerts: { event: "observation" } },
  skills: ["reconciliation-monitor"],
});

export default defineConfig({
  connectors: [
    connectorFromFile<typeof QuickBooksTransactionsConnector>(
      "./quickbooks-transactions.connector.ts"
    ),
  ],
  org: "finance",
  orgName: "Finance",
  orgDescription:
    "Help finance teams reconcile data, explain variance, and prepare reporting runs",
  agents: [finance],
  entities: [account, report, transaction, variance],
  relationships: [createsVariance, reconcilesTo, summarizedIn],
  automations: [reconciliationMonitor],
});

Connect your first agent to company context.

Connect any agent to shared context and keep consequential actions under approval.

Status:// connecting agent…