02 · Public beta
IdeasBoard
A capture box that saves before the model runs, then files the note with Claude Haiku.
- Type or dictate a thought once; a Claude Haiku pipeline files it into the right project, as an interpretation beside your words rather than a rewrite of them. A separate wall display shows the board on an always-on screen. In public beta at ideasboard.net, with Google sign-in.
How it works
- The capture is saved before any model call and the request returns at once; interpretation runs after the response. The original text is immutable.
- Structured output by forced tool use with a strict schema. Transient model errors are retried and permanent ones stop; during an outage a deterministic offline heuristic fills in and holds the capture for review.
- The wall display has its own payload, no capture bar and no navigation, and three privacy levels, defaulting to titles only.
- Tenancy is enforced at three independent layers: a request-scoped tenant context that throws when no owner is set, a query guard that rejects any statement on an owned table without an owner predicate, and row-level security forced on every owned table, with an application role that cannot bypass it.
Decisions
- It refuses pooled database connections: with 24 concurrent tenant scopes, the pooled endpoint returned 410 wrong-tenant reads out of 432, the direct one none.
- Row-level security alone was not enough, because the app’s own role could bypass it; hence the forced policies and a dedicated role.
- Prompt caching is deliberately left inert: at this prompt size it only pays if more than about 36 % of captures arrive within five minutes of each other.
- The suite runs against both an embedded Postgres and real Postgres, after a JSON double-encoding bug passed locally and broke multi-intent splitting in production.
Evidence
- Eval: 41 hand-written cases in six buckets (clear, ambiguous, messy, multi-intent, dictated, adversarial). 41 of 41 on three consecutive runs; p50 3.4 s, p95 4.4 s; 5 of 6 ambiguous captures held for review, no clear capture held. It needs a live API key, so it is run by hand, not in CI.
- The suite runs on both the embedded and the real Postgres driver; the tenancy and connection-pooling regressions run as their own job; a security probe asserts that requests to internal addresses fail.
Still open
- 41 cases is a regression check, not a benchmark.
- Google’s consent screen still names the auth provider’s shared client; a dedicated one is a manual step.
- Prompt caching pays nothing today, by the arithmetic above.
Built by
One developer, the repository’s only contributor.
PUBLIC BETA · 2026 · NEXT.JS 16 · POSTGRES RLS · CLAUDE HAIKU · DEMO TENANT · SYNTHETIC DATA
Open ideasboard.net (opens in a new tab)Back to the hall
From the project’s own repository and CI, as of September 2026. The repositories are private; code walkthroughs on request.