An agentic cash management platform that translates insights into action.
In the UK, late payments cost the economy almost £11 billion a year and are linked to 38 business closures every day. Founders see the red number on a spreadsheet — but a spreadsheet can't tell them what to do next. RunwayOps can.
RunwayOps watches a company's cash position in real time, and when something changes — a late customer, an incoming bank payment, a supplier email — it dispatches a team of specialised agents to decide, draft, and act. The founder approves; RunwayOps executes.
- Continuous cash-position awareness. Deterministic calculations assess the company's runway, upcoming payroll, customer receivables, and supplier obligations before the user even opens the app.
- Event-driven agentic layer. New context (an email, a bank payment, an overdue invoice) becomes a durable event in MongoDB and triggers LangGraph to route work to the right specialised agents.
- Memory of who pays, who waits, and what worked. Agents pull prior customer and supplier behaviour from MongoDB Vector Search (powered by Fireworks AI embeddings) to ground every decision in history, not guesswork.
- Action plans, not alerts. Instead of a red warning, the founder sees concrete next steps: follow-ups to send, payments to release, contractual clauses to invoke — each pending one-click approval.
- Autonomous voice negotiation. When a phone call is the right channel, an ElevenLabs voice agent places the call, negotiates payment terms on the company's behalf, and writes the transcript back into MongoDB.
- Self-improving. Every interaction — email reply, call transcript, payment outcome — becomes new context. The system gets smarter with every event.
┌──────────────┐ event ┌────────────────┐ route ┌─────────────────┐
│ Inbound │ ───────────▶ │ MongoDB Atlas │ ─────────▶ │ LangGraph │
│ signal │ │ (durable event │ │ orchestrator │
│ (email, │ │ store + audit │ │ │
│ payment, │ │ trail) │ └────────┬────────┘
│ invoice) │ └────────────────┘ │
└──────────────┘ ▲ ▼
│ ┌──────────────────────┐
│ │ Specialised agents: │
│ │ • Customer agent │
│ │ • Forecast agent │
│ │ • Supplier agent │
│ │ • Auditing agent │
│ └──────────┬───────────┘
│ │
┌──────────────┴──────────────┐ │
│ Vector Search over history │◀──────────────┘
│ (Fireworks AI embeddings) │ retrieve relevant
└─────────────────────────────┘ memory + draft action
│
┌────────────────────────┼─────────────────┐
▼ ▼ ▼
Founder approval Voice call via Audit trail
(email / payment / ElevenLabs ──▶ transcript ──▶ MongoDB
action queue)
- A customer promises payment by Friday. The customer agent retrieves that account's payment-reliability history, decides whether to treat the promise as confirmed cash or as a conditional commitment, and drafts the appropriate follow-up — all pending one-click approval.
- A bank payment lands unexpectedly. The forecast agent re-runs the runway calculation, the auditing agent records what changed and why, and any open actions that depended on the old position are re-prioritised automatically.
- A supplier needs to be paid but cash is tight. Agents check contractual terms (grace periods, late fees), surface the supplier's historical flexibility, and recommend whether to pay, defer, or negotiate — with the draft message or call script ready to go.
- A negotiation belongs on a phone call. When memory shows a counterparty responds better to voice than email, the system queues a call; once approved, an ElevenLabs voice agent dials out, negotiates within the founder's pre-set guardrails, and writes the transcript back to MongoDB.
- Every outcome feeds the next decision. Replies, payments, and call transcripts all flow back into vector memory, so the system's read on each customer and supplier sharpens with every interaction.
| Layer | Technology |
|---|---|
| Event store, audit trail, vector memory | MongoDB Atlas (with Vector Search) |
| Agent orchestration | LangGraph |
| Embeddings & LLM inference | Fireworks AI |
| Outbound voice agent | ElevenLabs (over Twilio) |
| Web app | Next.js, React, TypeScript, Tailwind |
Install dependencies:
npm installCreate a local .env file from .env.example and set your Atlas connection string:
MONGO_DB_CONNECTION="mongodb+srv://..."Check the Atlas connection:
npm run check:dbCheck which local provider keys are configured:
npm run check:envCheck provider authentication:
npm run check:providersList outbound-capable ElevenLabs phone numbers:
npm run elevenlabs:phonesImport the configured Twilio number into ElevenLabs:
npm run elevenlabs:import-twilioAssign the imported ElevenLabs phone number to the configured agent:
npm run elevenlabs:assign-agentSubmit a dry-run outbound call request:
npm run call:test -- --to 07490000000 --purpose "Confirm payment timing for INV-1042"Add --send only when the recipient has consented to receive the test call.
Validate the synthetic data pack:
npm run check:dataSeed or reset the demo database:
npm run seed
npm run reset