Abstract
Most money lent between people who know each other leaves no trace. A friend covers your share of dinner; a cousin borrows for tuition; a workmate spots you for a concert ticket. The amounts are small enough to be informal and large enough to quietly corrode a relationship when memory and goodwill diverge.
kasama.loan is a free, mobile-first ledger for exactly these loans. Its defining mechanism is a two-way confirmation loop: a debt is only “real” once both parties have acknowledged it, turning a one-sided claim into a mutually agreed record. From that shared record, kasama can generate calendar reminders and tamper-evident PDF documents that either party — or a neutral third party — can verify. The service runs entirely on edge infrastructure, keeps money in integer centavos to avoid rounding drift, and is sustained by an unobtrusive free tier plus an optional Pro subscription.
In one sentence
kasama replaces “I’m pretty sure you owe me” with a record both people already agreed to.
The quiet cost of an informal “utang”
In Filipino, utang is a casual debt, and lending within one’s circle is woven into daily life. That informality is a feature socially and a bug financially. Three failures recur:
- No shared source of truth. The lender remembers ₱1,000; the borrower remembers ₱800, or remembers paying half back. There is no artifact both sides agreed to at the time.
- The awkwardness tax. Reminding someone they owe you money feels like an accusation. So people don’t — and the debt silently becomes a gift, or a grudge.
- No standing when it matters. For a larger sum, a verbal agreement offers nothing to point to if trust later breaks down.
Spreadsheets and notes apps solve only the lender’s memory — they are still one-sided. Formal lending apps over-solve it, importing credit checks, interest-by-default and collections energy that have no place between a parent and child. kasama sits deliberately in the gap: structured enough to be a record, light enough to use between people who love each other.
What kasama is
Kasama is the Filipino word for a companion — the person you are with. The name is the thesis: this is a tool for money between people who are already on the same side.
kasama is a tracker and an agreement layer, not a lender. No money moves through it. It never advances funds, charges interest, or pursues collection. It records what two people decided, helps them remember it, and — when they want — gives them a document to prove it. It is Philippine-first in language, currency formatting, and payment vernacular (GCash, Maya, bank transfer, cash), but nothing about it is country-locked.
Track casual loans and more, settled without the awkwardness.
The Confirmation Wall
The heart of kasama is a refusal to let one person unilaterally define a debt. When a lender logs a loan, it does not enter the ledger as fact. It enters as a pending request addressed to the borrower, who must explicitly confirm or reject it. Only on confirmation does the loan become active and start counting in either person’s totals.
This single design choice produces most of kasama’s value:
- Consent is captured at the source. The record exists because both parties said yes — not because one party typed it in.
- Disputes surface immediately, when memories are fresh, instead of months later at repayment.
- Symmetry. The borrower sees the same numbers the lender does, in their own app, with the same status.
Why a wall, not a notification
A notification can be ignored; an unconfirmed loan simply isn’t counted. The friction is the point — it guarantees that everything in the ledger was mutually acknowledged.
The ledger lifecycle
Every loan is a small state machine. Beyond the active path, kasama models the full social reality of casual debt — including the graceful ways debts end without being repaid.
- Settle
- The debt was paid back. It closes and leaves the running balance.
- Forgive
- The lender writes the debt off deliberately — a first-class action, because “never mind it” is how a great many real loans actually end.
- Hide
- Remove a loan from your totals without forgiving it — a middle ground for debts you’re not chasing but don’t want to formally cancel.
- Reject
- The borrower disputes the request before it ever becomes active. Nothing enters the ledger.
Balances are computed from the event history rather than stored as a mutable number, and every amount is held in integer centavos — so repeated interest or split-the-bill math never accumulates floating-point drift.
Beyond one-to-one
Casual debt is rarely a clean pair of people. kasama scales the same confirmation principle up to groups and out to people who haven’t joined yet.
Friends
Add people by a stable User ID. Friendship is a request the other side accepts — with a cooldown to stop repeat spam.
Circles
Reusable groups (housemates, the barkada) for one-tap selection. A person can belong to any number of circles.
Events & splits
Log a trip or dinner’s expenses, split them, and “settle up” — which fans out into individual loans each member confirms.
Guests
Lend to someone with no account via a claim link or QR; the record binds to them the moment they sign up.
Interest and installments exist for the rarer, larger loan that genuinely needs them — opt-in, never the default, with custom repayment intervals bounded to a sensible 7–30 days. Group events can be joined by scanning an event QR, which adds the scanner to the split automatically.
Verifiable documents
For loans that warrant it, kasama generates a clean, formal PDF acknowledgement of the debt. Each document carries a SHA-256 fingerprint of its canonical loan data and a QR linking to a public verification page.
It is worth being precise about what this does and does not prove:
- It proves the record is intact. Re-hashing the loan data and matching the fingerprint shows the figures, parties and dates are exactly what kasama holds — the document hasn’t been altered after issue.
- It does not authenticate a screenshot. Anyone can photograph and edit an image; that forgery simply won’t match the hash on verification. The fingerprint is the source of truth, not the pixels.
Honest framing
kasama is not a notary and a kasama PDF is not a court instrument. It is strong, checkable evidence that both parties agreed to a specific record — which for the overwhelming majority of personal loans is exactly the assurance that was missing.
Showing a counterparty’s verified email on a document is strictly opt-in, requested per loan from each party.
Reminders, without the spam
Chasing a debt is the awkward part, so kasama offloads it to tools people already trust. Each loan with a due date exports an iCalendar (.ics) entry — compatible with Google, Apple, and Outlook calendars — and every user gets a private, subscribable feed of all their upcoming due dates that refreshes on its own.
The reminder then comes from the borrower’s own calendar, not a guilt-laden message from the lender. No push-notification machinery, no nagging, no app required to be open.
Trust & data ownership
A ledger of who-owes-whom is sensitive by nature, so the defaults lean private.
- Consent-gated sharing. Personal details such as a verified email appear on a document only when that person opts in, per loan.
- Your data is exportable. Users can download and extract their full ledger — kasama is a place to keep records, not a place that holds them hostage.
- No funds, no banking rails. Because no money moves through kasama, there is no balance to lose, freeze, or breach.
- Authentication via Google, with verified email as an opt-in layer for documents that need it.
Architecture
kasama runs as a single application deployed to the edge, chosen for low latency to a globally distributed user base and for cost that scales to near-zero at rest.
- Framework
- Next.js (App Router) with React, server-rendered.
- Runtime
- Cloudflare Workers via the OpenNext adapter; Smart Placement co-locates compute with the database.
- Data
- Cloudflare D1 (SQLite at the edge) for the ledger; R2 object storage for receipt images, with lifecycle cleanup and a hard storage cap.
- Money
- Integer centavos end-to-end; formatting localised at the edge.
- Documents
- PDF generation with an embedded serif typeface and an SHA-256 verification hash.
- Integrity
- Repository pattern with parallel in-memory implementations, exercised by a deterministic test suite on every deploy.
The data model follows a repository pattern: each domain (users, transactions, contacts, circles, events) has an interface with both an edge-database implementation and an in-memory one, which keeps the business logic — the ledger state machine, balance computation, clearing — fast to test and independent of infrastructure.
Sustainability & pricing
kasama must pay for itself without compromising the casual experience. The prime directive on monetisation is restraint: ads are inline and unobtrusive only — never pop-ups, interstitials, or anything that interrupts the core flow — and Pro removes them entirely.
| Plan | Price | What you get |
|---|---|---|
| Free | ₱0 | The full ledger, friends, circles, events, guests, reminders. Supported by unobtrusive inline ads. One interest-bearing loan included; pay-per-document for formal PDFs. |
| Pro · monthly | ₱150/mo | Ad-free, unlimited interest/installment loans, and formal verifiable PDFs included. |
Three revenue lines — restrained ads on the free tier, the Pro subscription, and pay-per-document — are deliberately layered so the product can cover its edge-infrastructure costs before it is widely known, while keeping the essential tracker free forever.
Roadmap
- Today: live web app, installable as a PWA, on a custom domain.
- Near term: the move to the kasama.loan domain; deeper group-split flows; richer document options.
- Planned: native Android and iOS applications.
- Ongoing: sharpening the product’s identity against the everyday ambiguity of the word “kasama,” and broadening beyond the Philippines without losing the local feel.