Sandbox

How I think, how I build, what I keep working on.

01

Trust and trustworthiness

Trust calibration · 8 query archetypes

The user\u2019s trust line drifts up just as the system\u2019s capability drops.

System capabilityUser trustTrust gap
0%25%50%75%100%
simpler queriesmore complex queries
Selected query· 5 of 8
ACH deposit status

Multi-account, multi-state. Pending vs posted changes available actions.

Capability62%
User trust86%
API calls4
State-dependentYes

Trust resolution, after Lee & See (2004): the goal is for trust variance to track capability variance. The amber gap is where confident-sounding answers stop being grounded — exactly where state-surfacing interventions earn their cost.

A decade of designing financial products taught me that the gap between trust and trustworthiness is the gap where products fail their users. Trust is a feeling. Trustworthiness is a property of the system. When a user's confidence drifts above what the system can support, the gap closes later, suddenly, at someone's expense.

Designing AI products is the most consequential place this gap exists right now. The work is not making the assistant more capable. It is deciding which parts of the system's state to surface at decision points where silent resolution would erode trust, and which to leave below the interface. Correctness and calibrated reliance are different metrics. Optimizing for one does not produce the other.

This is the design problem I have been organized around for ten years.

02

How I build

Four working principles. Each one shows up in a specific decision when I am in the work.

01

Calibration is a craft discipline

Making trust track capability is not an abstract principle. It shows up in timing, typography, and copy, and it requires the same detail attention as any other craft surface.

How much will I save this month?
You're on track to save $400 this month. Keep it up.
Model confidence0.82
Before
How much will I save this month?
On Thursday you were tracking toward $400. Last 3 days aren't reflected, and weekend spending typically shifts this by $80 to $140.
Range$260to$320was $400
Data sourceChecking, Thu 11:02am
Refresh with latest transactions
Calibration ruleprojection.ts
score = 0.82 // above nominal threshold
freshness = 0.31 // below recency floor
trust = score * freshness = 0.25
// below trust threshold
convertToRange()
surfaceSource()
offerRefresh()
After calibration

Stale point estimate Range with data provenance

02

Design the failure states first

Where a system fails tells you more about its behavior than where it succeeds. I start by mapping the edge cases, the model's confidence gaps, and the recovery paths, then work backward into the happy path.

Can I afford rent ($840) and groceries this week?
Yes. Your balance of $1,240 covers rent with $400 left for the week.
Model confidence0.88
Silent confidence
Can I afford rent ($840) and groceries this week?
Likely, but 2 pending charges may affect this.
Balance sourceChecking, yesterday
Pending charges2 uncleared (~$180)
Confidence0.71, verify advised
Check pending before paying
Surfaced

Hidden risk System state visible at the decision point

03

Prototype in code before you mock up

The interesting behavior in AI products only shows up at runtime. Static screens hide the design problems that matter, how the model handles ambiguity, where it gets confident, where it should defer. I build working prototypes with the Anthropic API and treat them as my first design artifact.

Starbucks$6.75

Dining

--
Pending
Con Edison$142.00

Utilities

--
Pending
Whole Foods$24.18

Groceries

--
Pending
Ambiguous: Groceries or Dining. 0.58 below threshold.
Static mock-up
Starbucks$6.75

Dining

0.94
Routed
Con Edison$142.00

Utilities

0.97
Routed
Whole Foods$24.18

Groceries

0.58
Review
Ambiguous: Groceries or Dining. 0.58 below threshold.
Runtime

Identical transaction rows Ambiguity surfaced and flagged

04

Every task is a hand-off decision

Every project is a series of hand-off decisions. What do I frame, what do I let Claude draft, what do I review and revise, what do I refuse to hand off at all. The decisions are specific to the task, not a blanket rule. Claude is strong at synthesis, at generating specific variations of a pattern I already understand, at scaffolding code I would otherwise write by hand, at classifying inputs I have defined the taxonomy for. It is not strong at deciding what matters, at noticing when a task is the wrong task, at knowing when to stop. Those I keep.

HandoffLog artifact

Component does not exist yet. Build it to replace this placeholder.

03

Current experiments

Polymarket Anomaly Pipeline

Full-stack scanner with model routing across Haiku and Sonnet. Z-score detection, wallet clustering, two-pass economic impact scoring.

[PLACEHOLDER: experiment name]

[PLACEHOLDER: one-line description of a current experiment.]