Skip to the work

New York, NY

Hi, my name is Aaryan and I am a programmer.

See the work
Lines authored
209,960
Built
Mar–Aug 2026
Shipped
2 on the App Store

Everything below is checkable

Nine claims, and the command that proves each one. Tap a chip to see the method.

Checks run 2026-08-24. No download, user, revenue, or rating figure appears anywhere on this site — none of it is independently verifiable, so none of it is claimed.

01Live on the App Store · v1.0 · released 2026-07-22

Esque Agent

Plan a project on your phone; it drives the coding agent on your own laptop.

Esque Agent turns an iPhone into the planning surface for a terminal coding agent. You describe a project, a planner writes the next instruction, and it POSTs over a QR-paired tunnel to esque-bridge — an open-source Node CLI that runs the work through your existing Claude Code, Codex, or Aider subscription. Replies, live previews, token spend, and typecheck results come back to the phone.

  • React Native
  • Expo SDK 56
  • Reanimated
  • Skia + SkSL
  • Node CLI
  • Express
  • Postgres

Esque Agent · the green-proof gate

Habit tracker with streaks

Finished

Step 5/5Polish & shipAnimations, error handling, and a release build.

You

Start "Polish & ship"

Prompt sent to your agent

Work on "Polish & ship". Animations, error handling, and a release build. Report back when complete or blocked.

Claude Code

✓ Polished: entrance animations, haptics, empty/error states, and a universal error boundary. Ran the test suite — all green. The build is release-ready.

Verifiably done · double-checked

typecheckpassingtestspassing

≈ $0.040

runVerify() rannpm run typecheck --silentCI=1 npm test

VERIFY_SIGNALS (objective — the bridge actually ran these): typecheck=passing; tests=passingjudge: done

05 / 05

Step 5 of 5, Polish & ship. Receipt: Verifiably done · double-checked. typecheck passing. tests passing. Judge verdict: done.

Esque Agent’s proof receipt, rebuilt in HTML from the app’s own components — not a screenshot. The judge cannot return done until runVerify() reports typecheck and tests passing, so only the last of the five steps can earn a green receipt: on step 3 the typecheck comes back red, on step 4 the tests do, and both return continue instead. Walk the run with the buttons, or the keys.
  1. Green Proof: build signals gate the verdict

    Before a completion judge is asked anything, the bridge runs the project’s own checks in the workdir — npm run typecheck, then CI=1 npm test — and returns {ran, passed, tail}. A failing line forces continue. If the judge still says done, an independent adversarial reviewer runs with its own schema and never sees the judge’s answer. The judge’s prompt is ordered head-first because the backend clamps content at 24,000 characters: putting the verify signals last meant the one thing the judge must see was the first thing deleted.

  2. A lane pool with sticky failover

    A lane is one credential context with its own CLI config dir; the bridge records only the path, never a credential. Sessions pin stickily because a cold lane re-pays the entire cached-prefix cost. Failure classification is anchored deliberately — an earlier version matched a bare 401 and the word authentication, which fired on ordinary agent output like the stack frame session.ts:401:12 and retired a perfectly healthy subscription.

  3. SHA-256, vendored by hand, to survive a sleeping laptop

    Quick-tunnel URLs rotate every time the laptop sleeps, so the phone’s stored URL dies; the pairing secret does not. The bridge heartbeats its live URL keyed by sha256(secret), the backend persists only the hash, and the phone recomputes the key to re-resolve. React Native has no crypto, and adding expo-crypto meant re-linking pods in a prebuilt iOS project — so FIPS 180-4 SHA-256 is a zero-dependency pure-JS file, verified byte-for-byte against Node.

Three steps: a terminal running npx esque-bridge, a QR pairing card, and a phone to bridge to agent flow diagram
Pair once by QR. The bridge runs the agent on your own machine, against your own subscription.
lines of application code across 142 files
31,378
npm releases of esque-bridge, latest 0.7.0
25
lines in the bridge CLI — one file
2,663
additional lines of Remotion render pipeline
11,987
expo-haptics call sites across 26 files
77
blueprints, pinned against the live npm registry
14
02Live on the App Store · v2.4 · first released 2026-04-24

MockMe

A live AI interviewer that hears your answer and presses on the weak part.

MockMe runs a spoken mock interview over a WebSocket state machine rather than a question queue, so the interviewer can follow up, escalate pressure, and wrap on a time budget — then returns a scored report with filler-word, pacing, and body-language analysis. It ships as a native iOS app backed by a Node service on Railway, with a self-hosted neural TTS voice.

  • React 18
  • Vite
  • Capacitor
  • Express
  • WebSocket
  • Supabase
  • Kokoro ONNX
  • MediaPipe

One exchange · the follow-up is the product

LIVE SESSION

Investment Banking Interview · Topic 1

04:12REC
AI Interviewer

Prof. Alloy

Career Strategist

Investment BankingBulge BracketGoldman Sachs

server statephase core · follow-up 1 of 2
  1. AI

    Walk me through how you would build a DCF from scratch.

  2. You

    So, um, we project unlevered free cash flows, then, uh, discount them back at WACC…

    Filler words

  3. Taking notes...

  4. AI

    Walk me through the math. Not the framework — the actual numbers.

    targetsthe number they didn’t source

    banking:technical-finance

listeningListening — tap mic to send
4 of 4

MockMe’s live interview surface, rebuilt in HTML from the app’s own components — not a screenshot. The question is entry tf-dcf-001 from the question bank; the follow-up is a real line from the curated banking:technical-finance pool. The interviewer is one of 8 fields × 28 firm tiers × 42 named-firm overlays. Phase and follow-up count are server state, shown here because they are the mechanism — the app itself never renders them.

  1. A phase machine that grades the half everyone drops

    Sessions run opening → intro → intro_followup → core → closing. The core phase tracks topics, not questions, allowing one to two follow-ups each; closing is triggered by elapsed time crossing roughly 80% of the budget, with topic limits only able to end it after 60%. The closing phase then records the questions the candidate asks back and grades those too, folding a ±10 adjustment into the final score.

  2. Sentence-incremental LLM → TTS → gapless audio

    An incremental splitter emits segments the moment they complete, with a deliberately tiny 8-character minimum on segment one and a clause-boundary cut at 70 characters, because first-audio latency is just the synth time of the first sentence. Each segment ships as its own ≤256KB base64 frame so the client decodes each independently and schedules them back-to-back at max(currentTime + lead, tail). Barge-in aborts through AbortController, and message-end always fires so captions complete even when audio dies.

  3. Deck grading where the model never emits a number

    PPTX decks are unzipped and walked as Open XML with ordering recovered from the relationships manifest; both PPTX and PDF render to per-slide PNGs via LibreOffice headless and pdftoppm inside the server’s Docker image. The model is then restricted to per-claim booleans and short quotes — coverage percentage and headline score are arithmetic over those flags. The module documents why: on hiring-type judgments every general model tested fell below the 0.80 four-fifths adverse-impact threshold while a task-specific model held 0.906.

Session state · scroll to run it

  1. opening
  2. intro
  3. intro_followup
  4. core
  5. closing
Time budget100%
80%

Elapsed time crossed 80% — closing fires, and the questions the candidate asks back get graded too.

  • Walk me through a DCF
  • Why this firm
  • Accretion / dilution
MockMe iPad dashboard: the practice hub showing rating, achievements, rank, weekly goal and quick-practice categories
The whole product on one screen — the iPad layout
lines of application code across 331 files
73,113
additional lines of Remotion render pipeline
28,052
interview questions, counted at runtime
1,196
REST endpoints across 16 route modules
75
Postgres tables
29
persona layers: fields × firm tiers × overlays
8×28×42
03Uploaded to internal TestFlight · bridge published on npm

Omnibus

Speak an idea into your phone; a local model audits it against your project’s memory.

Omnibus pairs an iPhone to a laptop with a one-time QR code, then runs a local Ollama auditor over a bounded, privacy-filtered map of your workspace plus a persistent Second Brain — a bi-temporal knowledge graph built by ambient git watchers — and returns a decision-ready brief. It is memory and review wrapped around the Codex CLI: recorded decisions and an anti-pattern registry go in before Codex edits, and Codex’s diff is audited against those same anti-patterns after.

  • TypeScript
  • Node 22
  • Express + ws
  • zod
  • Mastra
  • Ollama
  • React Native
  • Swift CoreHaptics

Pre-commit gate · omnibus-bridge hook check

HP-DRAWER — omnibus-bridge hook/tmp/gate-demo
git commit -m 'quick fix'Pre-commit gate: 1 staged file(s) checked, 1 blocking violation(s), 0 warning(s).server.ts:2 [BLOCK] Binding a listener to all interfaces  matched: server.listen(8787, "0.0.0.0");  why: Omnibus is local-first; the only public surface is the supervised tunnel, so a wildcard bind silently widens the attack surface.  Wrong:    // Wrong: the bridge becomes reachable from every network interface.    const server = http.createServer(handler);    server.listen(8787, "0.0.0.0");  Correct:    // Correct: loopback only; remote access goes through the supervised tunnel.    const server = http.createServer(handler);    server.listen(8787, "127.0.0.1");Commit blocked: 1 anti-pattern violation in 1 staged file. Fix them (or run `omnibus-bridge hook check --fix`) and try again.omnibus-bridge hook check --fixPre-commit gate: 1 staged file(s) checked, 0 blocking violation(s), 0 warning(s).FIXED server.ts: 1 auto-correction(s) written to the working tree. Review the change, then re-stage the file.Auto-corrected 1 file in the working tree. Review the changes, then re-stage them.Staged changes pass the anti-pattern gate (1 file, 0 advisory warnings).git add -u && git commit -m 'loopback only'Pre-commit gate: 1 staged file(s) checked, 0 blocking violation(s), 0 warning(s).Staged changes pass the anti-pattern gate (1 file, 0 advisory warnings).

exit 1Commit blocked — 1 anti-pattern violation in 1 staged file.

Command surfaceomnibus-bridge hook install [--force] | uninstall | check [--staged] [--fix]

Omnibus’s pre-commit gate, rebuilt in HTML from the bridge’s own source — live text, not a screenshot. Every line is a string emitted by runPreCommitCheck and formatViolation in bridge/src/second-brain/precommit.ts, or by the hook check branch of bridge/src/cli.ts. The rule, its rationale and both code examples are the seeded “Binding a listener to all interfaces” anti-pattern in anti-patterns.ts, where patterns are data: a detector, a Wrong example, a Correct example, and the find/replace auto-fix that --fix applies. The three commands are the repo’s own capture script, docs/demo-assets/_scout/gate.tape. Git’s own commit summary is omitted rather than invent a commit hash.
  1. A bi-temporal graph with order-independent merge

    Every fact records both valid time and transaction time, so a superseded decision is invalidated rather than overwritten and 'what did we believe on date X' stays answerable. Node ids hash (kind, normalized name), fact ids hash (contentHash, txCreatedAt), and merges apply in a total sort on (txCreatedAt, text hash) — peer reviews and ambient events arriving in any order converge to byte-identical journal state with no coordination protocol. Compaction moves only old invalidated records to a never-loaded cold archive, so RAM stays bounded while history survives.

  2. Personalized PageRank, written from scratch

    Entities are extracted from the idea, seeded onto matching nodes, and PPR runs over the undirected current-facts adjacency with edge weight equal to fact confidence — damping 0.85, 60 iterations max, 1e-9 L1 tolerance. Seed mass is weighted 1/log(2+degree) so a rare specific entity steers harder than a hub; dangling mass returns to the personalization vector to conserve L1; node ids iterate sorted so results are bit-deterministic. No graph library.

  3. The privacy boundary is a type, not a paragraph

    One exported predicate defines which executors may ever receive locally-derived knowledge — loopback Ollama and the on-host Codex CLI, never the cloud route — and it is the only gate. The auditor’s workspace snippets, the orchestrator’s recall, and the capture path all call it, each combined with a loopback-endpoint check. The workspace scanner behind it refuses symlinks, hidden files, VCS and dependency dirs, and secret-shaped filenames — .pem, .p8, .key, api_key, .env — before anything can be read.

Omnibus system architecture, in four parts.

  1. Phone. An iPhone takes a spoken idea. It pairs to the bridge with a one-time QR token, then holds an authenticated WebSocket to it.
  2. Bridge. Runs on the laptop, bound to 127.0.0.1. An auditor runs first and a developer runs second, both on local Ollama.
  3. Second Brain. The bridge recalls from and captures into a bi-temporal knowledge graph over an append-only NDJSON journal; retrieval is HippoRAG with Personalized PageRank.
  4. Home fleet. The bridge also fans work out to worker laptops on a private LAN, over HMAC-signed calls.

Zero cloud on the reasoning path.

Omnibus system architectureA four-part schematic. An iPhone pairs to a bridge on the laptop over a one-time QR token and an authenticated WebSocket. The bridge, bound to 127.0.0.1, runs an auditor and then a developer on local Ollama; it recalls from and captures into a Second Brain, a bi-temporal knowledge graph over an append-only NDJSON journal retrieved with HippoRAG Personalized PageRank; and it fans work out to worker laptops on a private LAN over HMAC-signed calls.01PHONEiPhone · speak an ideaQR · WSSone-time token02BRIDGElaptop · 127.0.0.1AUDITORreviews the ideaDEVELOPERwrites the diffboth on local Ollama · loopback onlyLAN · HMACHOME FLEETWORKER-01WORKER-02WORKER-03private LAN · HMAC-signed7 signed endpointsrecall · capture03SECOND BRAINbi-temporal graph · append-only NDJSONHippoRAG · Personalized PageRankZERO CLOUD ON THE REASONING PATHFIG. 01 · OMNIBUS SYSTEM01PHONEiPhone · speak an ideaQR · WSSone-time token02BRIDGElaptop · 127.0.0.1AUDITORreviews the ideaDEVELOPERwrites the diffboth on local Ollama · loopback onlyLAN · HMACHOME FLEETprivate LAN · 7 signed endpointsWORKER-01WORKER-02WORKER-03recallcapture03SECOND BRAINbi-temporal graph · append-only NDJSONHippoRAG · Personalized PageRankZERO CLOUD ON THE REASONING PATHFIG. 01

~22 hours

14 commits, 2026-07-20 22:47 to 2026-07-21 20:25. 29,098 lines, 199 passing tests, and a bridge published to npm.
14 commits, 2026-07-20 22:47 → 07-21 20:25
~22 hours
lines of source — 23,115 production, 5,983 test
29,098
automated tests passing, across 34 files
199
omnibus-bridge on npm, 3 versions
0.2.2
HMAC-signed private-LAN fleet endpoints
7
WebSocket client / bridge message types
9/10
04Production backend live on Railway · iOS app archived and release-gated, pre-submission

AlphaTrainer

Write an investment thesis at a real historical cutoff. Get graded on process, not luck.

AlphaTrainer reconstructs a public company’s entire information set as of a specific historical date — the last filing before it, price history, fundamentals, macro, and only news published before the cutoff — then asks you to write up to three ranked theses and grades them on catalyst identification, evidence usage, reasoning quality, and prioritization. Directional accuracy is deliberately down-weighted: a wrong call with sound reasoning still scores.

  • Python 3.12
  • FastAPI
  • SQLAlchemy async
  • Postgres 16
  • React 19
  • Capacitor
  • SEC EDGAR
  • Polygon

AlphaTrainer · the Council’s verdict

Verdict reached

Grade A, 8.7 / 10 composite

Clean, defensible work.

The Council’s verdict

4 specialists · weighted

  • score.catalyst · catalyst_identification

    Three things together: naming the right expectations gap, picking a coherent direction (long / short / neutral) for that gap, and committing to a horizon over which the gap closes. A real catalyst read with the wrong direction is partial credit, not a match.

    Scoring anchors

    9
    At least one user thesis is a match to the PRIMARY reference, and its horizon and direction are consistent with the primary’s.
    5
    The user catches part of the primary story — partial to primary, or a match with mismatched direction / horizon, or a match to secondary/tertiary only.
    2
    No match or partial anywhere. Claims are novel or contradict the reference, or direction is inverted on the only matching claim.

    guardrailno user claim matched any reference thesis → capped at 4

    Event-driven. He spots the trigger inside the noise.

    prompts/score_catalyst_v1.txt

  • score.evidence · evidence_usage

    Only how well the user grounded claims in source material — not whether the claims are correct. Every extracted claim arrives already labelled verified, paraphrased, fabricated or no_evidence by the grounding stage.

    Scoring anchors

    9
    Most claims (≥70%) cite specific filing sections, news articles or macro data, and the citations are verified or paraphrased. Zero fabrications.
    5
    About half of claims are grounded; the rest hand-wave. Or claims cite sources but at least one is fabricated / no_evidence.
    2
    Few or no claims cite anything specific. Vague references to “the filing” or “the market” without pointing to passages.

    guardrailat least one citation flagged as fabricated → capped at 5

    Footnote-deep. She wants the cite, not the conclusion.

    prompts/score_evidence_v1.txt

  • score.reasoning · reasoning_quality

    Logical structure alone: does the evidence lead to the conclusion coherently? The rubric explicitly forbids penalising a wrong direction here — that is scored elsewhere.

    Scoring anchors

    9
    Clear chain from evidence → intermediate inference → conclusion. Claims compound into a thesis rather than sit as disconnected observations.
    5
    Individual claims are reasonable but the chain is loose — the conclusion does not clearly follow, or a key inferential step is missing.
    2
    Claims are vague assertions, non-sequiturs or tautologies. No discernible argument structure.

    guardrailall theses under 30 words → capped at 6

    If the logic has a hole, he is already through it.

    prompts/score_reasoning_v1.txt

  • score.prioritization · thesis_prioritization

    Whether the theses are ranked correctly by importance, across direction and horizon. A thesis with the right insight but the wrong rank is the classic failure mode; splitting one good idea across multiple ranks is the lazy one.

    Scoring anchors

    9
    The user’s PRIMARY thesis is a match (or close partial) to the PRIMARY reference, with consistent direction. Lower ranks pick up secondary references.
    5
    The user caught the primary insight but ranked it second or third — right idea, wrong priority.
    2
    The primary is novel or contradicts while a lower-ranked thesis matches the primary reference — inverted priorities. Or all theses repeat one idea.

    guardrailonly primary thesis submitted; no priority signal → capped at 7

    Sizes positions. She cares which thesis you led with.

    prompts/score_prioritization_v1.txt

Catalyst HunterProf. Henrik Bauer. catalyst_identification, weight 30%, scored 9.2 of 10.

AlphaTrainer’s Council verdict, rebuilt in HTML from the app’s own components — not a screenshot. Each specialist is a separate prompt stage, sampled N=3 in parallel and reduced with statistics.median_low, then clamped by a deterministic guardrail. The composite is the weighted reduction of those four independent results — not one model call returning four numbers.

  1. A six-stage grader with self-consistency sampling

    Grading is not one prompt. Claims are extracted per thesis in parallel, aligned against ranked reference theses, grounded against filing text, then each of four dimensions is scored N times independently and reduced with statistics.median_low for a deterministic tie-break — so the median sample’s own justification is what gets surfaced, and the score and the explanation always agree. Grounding is cheap-first: substring, then difflib.SequenceMatcher; at or above 0.85 is verified at zero token cost, below 0.15 is fabricated, and only the ambiguous middle band pays for an LLM fact-check.

  2. Deterministic guardrails clamp the model’s own scores

    Post-LLM rules encode facts the grader has no authority to override: any citation flagged fabricated caps evidence usage at 5 out of 10, all theses under 30 words caps reasoning at 6, zero alignment matches caps catalyst identification at 4. Each cap is returned as a human-readable applied-caps string rather than silently swallowed.

  3. An anti-recognition universe, enforced at import

    The scenario pool is 90 hand-picked sub-mega-caps — AGCO, HWKN, RYAM, ATKR — chosen because low retail recognition forces genuine primary-source analysis. A 66-name excluded-household-names set and an assert_universe_clean() call that runs on module import make it structurally impossible to ship an AAPL scenario by accident.

Evidence usage · one dimension of four

5.0/ 10

applied_caps fabricated citation → evidence usage capped at 5

AlphaTrainer training desk: a scenario list showing companies with sector labels, historical cutoff dates and difficulty pills
Scenarios at real historical cutoffs — every stage of the pipeline takes the cutoff date as an argument
live API operations across 22 paths
26
lines of Python across 75 files
9,559
curated tickers, assert-checked at import
90
Postgres tables, 8 Alembic migrations
18
versioned LLM prompt templates on disk
10
scenario IDs assembled in pipeline run logs
206
05TestFlight lane completed 2026-07-06 · signed App Store IPA on disk

Epitome

A journal that maps your notes in 300-D and shows you where you contradict yourself.

Epitome splits each journal entry into atomic claims, embeds them with Apple’s on-device NLEmbedding, projects them onto a fixed 300-dimensional unit hypersphere, and lays them out as a force-directed constellation you navigate by pinch-zooming between three altitudes. A psychology engine then reads the geometry — low-similarity pairs that share vocabulary become dissonance, isolated notes become shadow material, and waypoints between distant thoughts become syntheses you implied but never stated.

  • Swift 6
  • SwiftUI
  • Accelerate / vDSP
  • Metal
  • SpriteKit
  • CoreHaptics
  • StoreKit 2

260 points · k-nearest 6 · cosine threshold 0.45 · Barnes–Hut θ 0.85 — the shipped parameters, in 48 dimensions instead of 300, drawn in 3.

Epitome embeds on a fixed 300-dimensional unit hypersphere; this is the same pipeline at 48 dimensions, drawn through its projection onto 3. Seeded with 0x5DEECE66D through SplitMix64 and Box–Muller, exactly as the app seeds its JL projection — so it is the same constellation on every reload. 745 links, mean degree 5.7. The force simulation stops after 400 frames; only the rotation continues. 2 notes had no candidate clear the threshold at all and sit unlinked — the app calls that shadow material.

  • link
  • dissonance — linked, but far apart

The visualization depicts 260 simulated notes as points spread evenly over the surface of a sphere, turning slowly about its vertical axis. Each note is a 48-dimensional unit vector; because the vectors are unit length, cosine similarity is their dot product. A line joins two notes when one is among the other’s 6 most similar and their similarity is at least 0.45. Points repel one another through a Barnes–Hut quadtree opened at θ = 0.85, links pull like springs, and a weak gravity holds the whole field centred. The 9 accent-coloured lines are dissonance: pairs the geometry linked that nonetheless sit 54 to 64 degrees apart on the sphere.

Parameters running in the Hypersphere visualization
Points260
Embedding dimensions48 here, 300 in the shipped app
Display dimensions3
Nearest neighbours (k)6
Cosine similarity threshold0.45
Barnes–Hut opening angle (θ)0.85
Links drawn745
Mean degree5.73
Dissonant pairs marked9
Unlinked notes2
Random seed0x5DEECE66D, SplitMix64
  1. Whole-corpus similarity as a single BLAS GEMM

    Because every embedding is unit-normalized, cosine similarity is the raw dot product — so the full n×n similarity matrix is exactly the Gram matrix M·Mᵀ, issued as one cblas_sgemm instead of n² scalar products. It is stored as a packed upper triangle indexed i*count − i*(i−1)/2 + (j−i), halving memory, behind a subscript that orders its arguments so callers never have to think about symmetry.

  2. SLERP with both singularities handled

    Novel implied thoughts walk the great-circle arc between two distant notes, so every intermediate is a unit-length, on-manifold vector rather than an off-sphere average. Both degenerate cases are explicit: cos θ above 0.9995 falls back to normalized lerp, and cos θ below −0.9995 — antipodal, where infinitely many shortest arcs exist — builds an orthonormal vector from whichever basis axis is least aligned and rotates through it. Arbitrary, but the same arbitrary answer every launch.

  3. Barnes–Hut, pinned against brute force in a test

    The O(n log n) quadtree collapses a distant cell into a single pseudo-body when s/d is below θ, shipped at 0.85. Rather than asserting the approximation is fine, a unit test builds a deterministic 200-point cloud, runs the tree at θ = 0.5 against an exact O(n²) reference, and requires relative error under 0.2. The SpriteKit scene then reuses that same Core quadtree inside its own per-frame integrator with physicsWorld.speed pinned to zero.

Epitome · provocation card · four lenses

The engine reads geometry and returns psychology. Each lens below names the geometric condition that produced it.

Four provocation types — Double-Loop (most-linked note), Shadow (least-linked note), Dissonance (a low-similarity pair sharing vocabulary) and Synthesis (a SLERP waypoint between two distant notes). Stepping between them needs JavaScript; the dissonance card is shown.

Skin
DISSONANCEintensity0.646

SimilarityMatrix.pairs(below:) — cosine under dissonanceThreshold, tension amplified by shared vocabulary

both notes on the unit hypersphere; the arc is the angle between them

  • A · note 02 · degree 7

    Rest feels like cheating.

    • rest
    • feels
    • like
    • cheating
  • B · note 03 · degree 6

    Rest is sacred

    • rest
    • sacred

shared salient token: rest — tokens of 4+ letters, stopwords removed, Jaccard over the union

similarity
+0.662
angle
48.6°
overlap
0.200
tension
0.115

base = (−sim + 1) / 2 · tension = base × (0.6 + 0.4 × overlap) = 0.115 · intensity = min(1, 0.6 + 0.4 × tension) = 0.646

userPrompt · makeDissonance(a:b:tension:)

These two thoughts are mine, written at different times:

A: "Rest feels like cheating."

B: "Rest is sacred"

They cannot both be fully true in the way I seem to believe them. Ask me the question that exposes what I am avoiding by keeping them apart.

systemPrompt · the interlocutor this installs

You are the Epitome — an uncompromising Socratic interlocutor inside the user's own mind. You have detected that two of their sincerely-held thoughts contradict each other. Do not soften this. Do not resolve it for them. Your single job is to hold both thoughts in front of them at once and ask the one question that makes the contradiction impossible to ignore. Be precise, be calm, be relentless. Never exceed three sentences.

The detector admits a pair only below dissonanceThreshold −0.15, and no pair in this eight-note fixture gets there — mean-pooled word vectors stay in a positive cone; the fixture's lowest cosine is +0.393. This is its highest-tension vocabulary-sharing pair, with the numbers the detector computes for it.

Dissonance provocation, intensity 0.646, galaxy skin.

Rebuilt in HTML from Epitome’s own SwiftUI provocation card (LeafView.swift) — a rebuild, not a screenshot. The eight example notes are the fixture paragraphs in ThoughtSplitterTests.swift, split by the repo’s own ThoughtSplitter; nobody’s journal. Every cosine, overlap, degree, gap and intensity was measured by compiling EpitomeCore and running its real pipeline over those notes on macOS. Both skins are the shipped ones, persisted in the app to UserDefaults under epitome.theme.

The app arms a haptic here too: the rail plays ResolveDissonance.ahap — a sharp recognition strike, then a 1.1 s settling swell — when a card appears above intensity 0.8. None of these four clears it; the highest is 0.700.

unit tests in 9 suites, all passing
35
lines of Swift across 54 files
7,558
lines in EpitomeCore — no UIKit dependency
2,191
stitchable Metal shader entry points
6
latent dimensions · θ 0.85 · k 6
300
JSON files. No database.
2

08 — How this all works

The model never gets the last word.

Every one of these five systems puts a language model in front of a decision it is not allowed to make. The model drafts, scores, or suggests; a deterministic gate — a typecheck, a clamp, a predicate, a geometry — is what actually decides. That is not a philosophy I applied afterward. It is the same structure five times, because it is the only structure I trust to ship.

  1. Esque Agent

    Proposes
    “the task is done”
    Gate
    runVerify()
    Decides
    continue, or stop
  2. MockMe

    Proposes
    per-claim booleans
    Gate
    arithmetic over flags
    Decides
    coverage % and score
  3. Omnibus

    Proposes
    an auditor brief
    Gate
    isLocalExecutorProvider()
    Decides
    who sees local context
  4. AlphaTrainer

    Proposes
    four dimension scores
    Gate
    apply_guardrails()
    Decides
    the capped score
  5. Epitome

    Proposes
    a provocation
    Gate
    on-device geometry
    Decides
    what to surface

09 — Rendering the marketing in code

The ads are a React app.

Every App Store preview, TikTok cut and store screenshot across four of these five projects is a Remotion composition — React components rendered frame by frame, not a timeline in an editor. That makes a brand change a prop change, and a new locale a re-render.

The technique worth stealing is the timing. Scene durations aren't guessed: each voiceover is measured with ffprobe, the durations become a scene table, and durationInFrames is exported back into the composition registry. The video is exactly as long as the audio, and it stays that way when the script changes.

MockMe
28,052
Esque Agent
11,987
AlphaTrainer
8,011
Omnibus
2,364
Total render pipeline
50,414
Scene timing table for the rendered reel. Durations were measured from the recorded voiceover with ffprobe and exported into the composition registry as durationInFrames. The five scored scenes run to frame 1,240 of the 1,335 rendered; the scenes themselves total 1,178 frames, and the remaining 95 are the tail after the last line finishes.
SceneFramesStartsEnds
hook2770.07s4.68s
proof2614.92s9.27s
elo2049.50s12.90s
turn20413.17s16.57s
cta23216.80s20.67s
22.25s · 1080×1920 composition, served at 720×1280 · 60fps · 1,335 frames generated in React. Scene boundaries derived from ffprobed voiceover durations — the timing table is computed from the audio, then exported back into the composition registry as durationInFrames. The clip embedded here is the silent cut.

reading the rail

Drag it. The hairlines are not decoration and not evenly spaced — they sit at frames 281, 556, 774, 994, 1,240. Those are the composition's own offsets, not the running sum of the line durations: the schedule opens with a four-frame lead-in and leaves fourteen to sixteen frames between scenes, so adding the durations up lands the last boundary a full second early.

The 5 scored scenes run to frame 1,240 of the 1,335 rendered; the remaining 95 are the tail after the last line finishes. The scenes themselves are 1,178 frames — the difference is the lead-in and the gaps.

and this page's own title cardWritten for this site in remotion/src/Title.tsx and rendered the same way — 320 frames at 30fps, 1920×1080, no timeline and no editor. The dither behind the type is the same idea as the field at the top of this page, computed per frame instead of per pixel.

10 — The numbers

Measured, with the method attached.

Nothing here is a projection or an estimate. Where a number is a poor proxy for the thing it appears to measure, the chart says so.

Externally re-verifiable

Ship log

Eleven release events across five projects, Mar 25, 2026 to Aug 24, 2026. Shape is the kind of artifact; colour is the project.

MarAprMayJunJulAugEsque Agentesque-bridge first publish — May 28, 2026App Store v1.0 — Jul 22, 2026esque-bridge 0.7.0 — Aug 9, 2026TestFlight lane — Aug 9, 2026MockMeFirst App Store release — Apr 24, 2026v2.4 released — Aug 10, 2026Omnibusomnibus-bridge 0.1.0 — Jul 17, 2026TestFlight lane — Jul 21, 2026omnibus-bridge 0.2.2 — Jul 22, 2026AlphaTrainerSigned App Store archive — May 30, 2026EpitomeSigned archive + TestFlight — Jul 6, 2026
  • npm publish
  • App Store release
  • Signed archive
  • TestFlight build
Ship log: every externally verifiable release event, 2026-03-25 to 2026-08-24
ProjectDateKindEvent
MockMeApr 24, 2026App Store releaseFirst App Store release
Esque AgentMay 28, 2026npm publishesque-bridge first publish
AlphaTrainerMay 30, 2026Signed archiveSigned App Store archive
EpitomeJul 6, 2026Signed archiveSigned archive + TestFlight
OmnibusJul 17, 2026npm publishomnibus-bridge 0.1.0
OmnibusJul 21, 2026TestFlight buildTestFlight lane
Esque AgentJul 22, 2026App Store releaseApp Store v1.0
OmnibusJul 22, 2026npm publishomnibus-bridge 0.2.2
Esque AgentAug 9, 2026npm publishesque-bridge 0.7.0
Esque AgentAug 9, 2026TestFlight buildTestFlight lane
MockMeAug 10, 2026App Store releasev2.4 released
Every point is externally re-verifiable: npm registry timestamps, App Store release dates, and signed archive dates on disk.

Two measurements, one frame

Commit events

Bars are commit events per month, March to August 2026. The dots are a second, unrelated axis: total lines of code per repository, placed at that repository’s last commit.

commit eventslines of code01020050k100kMarAprMayJunJulAugMockMe 101,165Esque Agent 43,365Omnibus 29,098AlphaTrainer 28,561Epitome 7,7711231501422
Commit events per month, March to August 2026
MonthCommit events
2026-031
2026-0423
2026-0515
2026-060
2026-0714
2026-0822
Lines of code and commit count per repository, with the date of the last commit
RepositoryLines of codeCommitsLast commit
MockMe101,165382026-08-17
Esque Agent43,365192026-08-09
Omnibus29,098142026-07-21
AlphaTrainer28,56122026-08-19
Epitome7,77122026-08-17
Commit count is a bad proxy for work here. AlphaTrainer is 2 commits for 28,561 lines; Epitome is 2 commits for 7,771. Bars are commit events. The dots are lines of code by repository, placed at each repository’s last commit.

Composition

209,960 lines, and what was excluded

209,960 first-party lines across 947 files and 11 languages, counted after vendored code was removed.

TypeScript (.tsx): 103,199 lines (49.2%) in 368 filesTypeScript (.ts): 70,805 lines (33.7%) in 292 filesPython: 10,593 lines (5.0%) in 80 filesJavaScript: 9,248 lines (4.4%) in 56 filesSwift: 8,392 lines (4.0%) in 65 filesHTML: 3,240 lines (1.5%) in 23 filesSQL: 2,031 lines (1.0%) in 36 filesCSS: 1,080 lines (0.5%) in 7 filesShell: 915 lines (0.4%) in 11 filesC headers: 331 lines (0.2%) in 8 filesMetal: 126 lines (0.06%) in 1 filesTypeScript (.tsx)103,199 · 49.2%TypeScript (.ts)70,805 · 33.7%Python · 10,593 · 5.0%JavaScript · 9,248 · 4.4%Swift · 8,392 · 4.0%HTML · 3,240 · 1.5%SQL · 2,031 · 1.0%CSS · 1,080 · 0.5%Shell · 915 · 0.4%C headers · 331 · 0.2%Metal · 126 lines · 1 file · 0.06%
Authored lines of code and file count by language, 209,960 lines total across 947 files
LanguageLinesShareFiles
TypeScript (.tsx)103,19949.2%368
TypeScript (.ts)70,80533.7%292
Python10,5935.0%80
JavaScript9,2484.4%56
Swift8,3924.0%65
HTML3,2401.5%23
SQL2,0311.0%36
CSS1,0800.5%7
Shell9150.4%11
C headers3310.2%8
Metal1260.06%1

An unfiltered count reports 125,298 lines of JavaScript across 456 files. Almost none of it was written: it is build output plus vendored payloads — server/dist, three separate copies of MediaPipe’s vision_wasm_internal.js, andcordova-plugin-purchase/store.js shipped inside iOS app bundles. The 10,544 above is first-party source only. The largest JavaScript file that was actually written is esque-bridge/index.js, at 2,663 lines.

This is a wc-style count, so 16,248 blank lines and 20,229 comment lines are inside the total above — 173,483 of it is non-blank, non-comment. Every figure here comes from scripts/measure.mjs, which is in the repository.

One bar, 11 languages, no “other” bucket. Metal is a single 126-line file — 0.06% of the total, and the only reason the Epitome constellation renders on the GPU.

The five-question grid

Five projects, the same five questions

Every project answers the same five questions, including the two that answer one of them with a zero. Bar length is lines of code relative to the largest project; a hollow dot means no test suite exists.
ProjectLinesTestsShipped whereExternal artifactLive endpoint
Esque Agent31,378noneApp Store v1.0esque-bridge@0.7.0
MockMe73,11388 definedApp Store v2.4id 6761743834/api/health ok
Omnibus26,734199 passingTestFlightomnibus-bridge@0.2.2
AlphaTrainer20,550nonepre-submissionsigned IPA26 operations
Epitome7,77135 passingTestFlightsigned IPA
Two of the five have no tests at all. That column is in the grid because leaving it out would make the other three worth less.

11 — Who

Aaryan Chava

I build the unglamorous half of an AI product: the part that decides whether to trust the model. Founder and lead engineer at Esque Technologies LLC since April 2026, where two of these five apps shipped to the App Store. Before that, a software engineering intern at Nurish Digital from August 2024 to June 2025.

I'm at NYU studying computer science and economics, expected May 2029. I write the marketing pipelines in code too — four of these five projects render their own video in React, which is either a good instinct or a tell, depending on who you ask.