Strategic insights01 / 10

How I make AI decisions: choices, alternatives and risks, not features.

Decisions from building curatorial.app, an AI platform for curators, and the Curatorial OS, the fleet of agents that runs the company behind it. Each shows the choice, what it was weighed against, and the risk it accepted.

THE ENGINEERING EVIDENCE

is in the appendix and in the full 32-slide case study.

curatorial.app · strategic insights · October 202601
Decision 1 · Market02 / 10

Pick a market you can win: small and specific beats big and contested.

DECISION

Serve one small, specific profession (curators) whose work is source-heavy and badly served by general chat tools. Enter through students and independents, then move to institutions on proof.

ALTERNATIVE REJECTED

A broad “AI for knowledge workers” product, competing head-on with general assistants on distribution and model quality.

TRADE-OFF ACCEPTED

A low revenue ceiling (roughly $0.8–2.3M a year at 10–30% penetration) in exchange for a market a small team can actually win and learn from.

The order of segments is a risk decision, not a size decision: start where acquisition is cheap and feedback is fast, add human sales only where deal size pays for it.

9–21kcurators realistically reachable
3 phasesstudents → institutions → directors

Bottom-up sizing from public data (e.g. BLS curator counts). Planning estimates from November 2025, pre-launch: not traction.

Why it matters to an organisation: the same logic applies to AI use cases. Start with a narrow, high-value workflow, not a platform rollout.
curatorial.app · strategic insights · October 202602
Decision 2 · Pricing03 / 10

Every price point has a technical enforcement, or it is only a hope.

Commercial choiceWhyWhat enforces it
Permanent free tierEarn the first win at no cost to the userOpen-weights model, per-tier caps, atomic token accounting
Viewers free, editors paidEvery shared project becomes an invitationRead-only role enforced by row-level security in the database
Model class follows the tierCost per user rises only where value doesOne model wrapper with per-tier and per-feature routing
Heavy users bring their own keyPower users don't erode marginVaulted keys injected per request; they pay their provider directly
Teams share researchA natural step up from one seat to TeamShared pools under team-scoped security
Alternative rejected: pricing on a page, enforced by good behaviour
Trade-off: pricing changes become engineering changes, so they're made deliberately
curatorial.app · strategic insights · October 202603
Decision 3 · Governance04 / 10

Governance as risk choices: name the risk, pick the control, pay its cost.

RiskChoiceCost of the choice
Users seeing each other's dataThe database enforces access (row-level security on every table); application code is the second lineMore policy work up front, and every new table needs one
Leaked customer API keysKeys in a database vault, decrypted per request, never in environment variables or logsSlightly more latency and complexity per call
Documents leaving our controlSelf-hosted OCR, so document text isn't sent to a third party for extractionWe run and patch the service ourselves
Internal details leaking in errorsClients get an error code only; detail stays in server logs, checked by a lint ruleHarder debugging from the client side
Agents acting as usersBots authenticate as their own identities with signed tokensSeparate identities to manage
Alternative rejected: a policy document with nothing enforcing it
Ongoing: an authorisation audit keeps finding and closing gaps
curatorial.app · strategic insights · October 202604
Decision 4 · Cost05 / 10

Cost discipline is designed in, not reviewed after the invoice.

Price once, use twice

One function prices every model call and feeds both billing and monitoring. Reconciliation becomes “did we miss a call?”, never “do two sums agree?”.

Attribute to a feature

Every call carries a feature name, so the question “what does this capability cost?” has an answer, not just “what did this vendor cost?”.

Guard the edges

A response that reports zero tokens is flagged, not billed as free. An unknown model falls back to a default rate and raises a warning.

Model choice is a cost/quality decision

Swapping a model is a configuration change, tested before release. Heavy users can move their cost to their own key.

Alternative rejected: watching the provider's monthly bill
Trade-off: every new feature has to be wired into attribution before it ships
curatorial.app · strategic insights · October 202605
Decision 5 · Evaluation06 / 10

Evals are worth it for the failures they prevent, not the scores they print.

What the evals caughtHowFailure avoided
A notebook generator ignoring its sourcesGroundedness scored 0–10 out of 100. Retrieval was reading an empty column. After the fix: 0.96.Confident, ungrounded summaries shipped to users, probably for every earlier output
A permissions bug that wasn'tEvery count test failed with “permission denied”. Isolating the layer showed a paid-tier gate the test user lacked.Loosening security to fix a test problem
Errors silently maskedA route caught the wrong exception type and hid recoverable model output behind a generic error.Users seeing failures the system could have handled
Normalising a failureA route failed its schema on 6 of 6 live calls. It was excluded and labelled, not baselined.“Broken” quietly becoming the expected score
Decision: test the real application, with a judge that is never the model under test
Trade-off: real API cost, so samples are small and say so
curatorial.app · strategic insights · October 202606
Decision 6 · Company OS07 / 10

A company run by agents: the Curatorial OS, eleven narrow bots with one job each.

CUSTOMERS
Curabotcustomer service from a knowledge base
Userbotresearch assistant for users
Lifecyclebotonboarding and lifecycle email
GROWTH
Contentbotcontent drafting and analytics
Radarbotscheduled market radar
Researchbotdaily research digest
RUNNING THE COMPANY
Ceobothealth synthesis and admin reports
Pabotpersonal assistant
Codebotpull-request review and digests
KEEPING IT UP
Watchdogrestarts degraded bots
Infra monitorhost and plan usage
HOW IT'S DESIGNED
  • One job per agent. Narrow agents are easier to test, trust and replace than one general agent with broad access.
  • Its own identity. Each bot signs in as itself with signed tokens and goes through the same governed API as users.
  • No model where a mistake is costly. Lifecycle email is sent by a deterministic runner.
  • Checked and watched. An eval stops the support bot inventing features, and a watchdog restarts failures.
13 containers plus scheduled timers, live on one small server
Why it matters: it's the AI operating layer a small organisation needs, built and run for one
curatorial.app · strategic insights · October 202607
Lessons08 / 10

What I'd do differently, and what I'd tell an organisation to do first.

Secrets manager from day one

It was adopted later. Retrofitting secrets handling is always harder than starting with it.

Test regime before code

Decide how quality will be judged before anything is built, not after.

Domain-driven design from the first commit

Business rules in one tested place stop features drifting apart.

System diagrams from the start

AI coding agents work with little context. A standing map of the system keeps them on course.

each lesson came from something this project had to fix later
curatorial.app · strategic insights · October 202608
Application09 / 10

How I'd apply this to an organisation: the same method, one level up.

01

Diagnose

Where is AI already used, with what data, at what cost and risk? Most organisations find more shadow use than they expect.

→ use-case map + risk register

02

Decide

Treat each tool or model choice as a decision: criteria, a test, a decision and a review date. Build, buy or configure.

→ decision records

03

Prove

A small evaluation set per use case and a baseline before rollout, with human review designed in.

→ evaluation set + baseline

04

Operate

Cost attribution, guardrails, adoption tracking and narrow agents for routine work, as in the Curatorial OS, so gains compound.

→ run-book + dashboard

each step mirrors work done on this project
indicative shape: scope and timing agreed per organisation
curatorial.app · strategic insights · October 202609
Appendix · Engineering evidence10 / 10

The evidence behind the decisions, in numbers.

20+

LLM-backed endpoints in five families

24 / 24

retrieval recall@3 on a seeded set

7 · 39

evaluation suites · test definitions

219 / 219

database tables with row-level security

13

containers in the agent fleet, plus scheduled timers

19

bounded contexts in a framework-free domain layer

The full 32-slide case study covers architecture, retrieval, model routing, evaluation, monitoring, security and the agent fleet: portfolio.curatorial.app

models and figures as of October 2026
all code LLM-written under my oversight, planning and guidance
curatorial.app · strategic insights · October 202610