river.io/otter
v0.1.0 · In development · macOS

Otter.
The operating system for a solo software business.

One native Mac app for the whole practice: leads, scopes, deposits, sign-offs, change requests, handoffs and invoices. The CRM lives in a SQLite file on your own machine. Specs and proposals are plain Markdown you can grep, edit in any editor, and hand straight to a coding agent. Nothing syncs anywhere you did not ask it to.

01 · The pipeline

Eight gates between a stranger and a paid, closed-out project.

Every freelance disaster is a skipped step. Otter makes each one a gate with a checklist, tracks how long work has sat in a stage, and nudges when something goes quiet — but any gate can be overridden with a reason, and the override is recorded.

01

Qualify

Is this real work, for a client who can pay?

02

Scope

Written, with what is explicitly out of scope.

03

Deposit

Money before build. No exceptions worth making.

04

Sign-off

Requirements agreed in writing, then frozen.

05

Build

Milestones, time and the files in one workspace.

06

Changes

Every change request priced against the original.

07

Handoff

Deliverables, credentials, documentation, done.

08

Close-out

Ask for the testimonial and portfolio permission.

Kanban board · days-in-stage badges · nudge rules · a ranked NOW list of five things · quick-capture hotkey into the inbox

02 · Capabilities

A business system that survives being deleted.

Everything Otter manages stays in formats that outlive it: a SQLite file, a folder of Markdown, your own repositories.

CRM & pipeline

Clients, leads and the board

Leads from Fiverr, Twine, LinkedIn and plain referral, moving through the stage gates with interactions, checklists and nudges. Stored in local SQLite via GRDB — one file, yours.

Files workspace

Specs as plain Markdown

Proposals, scopes, requirements and meeting notes are Markdown in a folder you choose, watched live. Grep them, edit them anywhere, feed them to an agent.

Billing

Ledger truth, never an estimate

Invoices are built from append-only per-repo LEDGER.md files, parsed exactly. Invoiced rows become immutable; an ambiguity is an error, not a guess.

Integrations

Nothing that risks the accounts

The official GitHub API, official LinkedIn posting OAuth, and parsing of your own notification emails. No scraping, no credential replay, no stored marketplace passwords.

Factory feed

Every repository, read-only

A live, read-only view of each project repo: recent commits, metrics, progress notes and the tail of its ledger — so the business view and the code view agree.

Showcase

Close-out feeds the portfolio

Testimonials and portfolio permissions are captured at close-out, while the client is still delighted, rather than chased down six months later.

03 · Non-negotiables

Five rules the app is not allowed to break.

These are architectural, not preferences — they constrain what Otter is permitted to do with your business.

Billing is bill-quality
Ledgers are parsed exactly, never estimated. Once a row has been invoiced it is immutable. Ambiguity is an error the owner sees, not a number the app invents.
Never risk the income
No automated login, credential replay, headless scraping or unofficial API calls against the marketplaces. Official OAuth and your own mailbox, or nothing.
Client data stays local
No telemetry, no cloud sync, no outbound calls beyond the integrations you explicitly connected. Secrets live in the macOS Keychain, never in the database.
Advise, don't imprison
Every stage gate can be overridden with a reason, and every override is written into the stage history. The process serves you, not the other way round.
The files are yours
The workspace stays plain Markdown that remains fully usable if Otter is deleted. The database holds references and hashes, never the only copy of anything.
04 · Status

Built in eight phases. Six are done.

Otter is a working tool for River.io LLC first and a product for other freelancers second. It is not on the Mac App Store yet and there is no public download — if the shape of it is interesting to you, write and say so.

[x]0 · ScaffoldProject, library shells, factory docs
[x]1 · Domain & storageEntities, stage machines, gates, schema
[x]2 · CRM & leadsKanban, nudges, NOW list, quick capture
[x]3 · Files & projectsMarkdown workspace, milestones, handoff
[x]4 · Ledger & invoicingTime, ledger import, invoices
[x]5 · GitHub & showcaseRepository feed, testimonials, portfolio
[~]6 · Publishing & emailIn progress
[~]7 · Polish & packagingIn progress