Skip to content
Read. The written site. One idea per screen.
CV (PDF)Hire James

Manila GMT+8 · open to work

James Lorenz Santos Agentic Engineer & AI Automation Developer

I build production software with AI agents, and every project number on this page names the file it was read from.

Screenshot of the sluice landing page showing its idempotent-execution comparison: 666 duplicate charges under naive retry versus 0 with sluice, next to a results table breaking down intent success rate and duplicate side effects.Screenshot of the klik landing page's dark intro screen, headlined “Tired of sending applications?” above a join-the-waitlist button.Screenshot of the polis map mid-pan, showing agent guild districts as isometric buildings and a banner noting that 8 of 59 agent citizens answer to no charter.Screenshot of dipmeter showing 230,059 earthquake hypocentres glowing inside a transparent Earth, coloured by depth from orange at the surface to blue at 700 km, with the Tonga and South American slabs standing out as dipping sheets beside the depth, magnitude and time controls.Screenshot of orrery showing the asteroid belt as a blue haze of 120,000 sampled bodies around the inner planets, with the population counts, the find-a-body index and an instrument readout of drawn count, frame time and solver beside it.Screenshot of the kedge Raft simulator mid-run, showing a red "not linearizable" verdict with the witness operation that could not be placed anywhere in a consistent order, above the client history strip it was derived from.

666duplicate side effects with naive retry, 0 with sluice

sluice read from chaos/results/latest.json

16of 19 tables cleared on account deletion

Klik read from docs/measurements/klik-account-purge.json

0unreachable members, down from 8, and 25 of 59 never dispatched

polis read from data/ecosystem.json

230,059located hypocentres against 27 modelled slabs

dipmeter read from public/data/manifest.json

0.0149AU worst blind-to-predicted gap disagreement

orrery read from data/audit.json

102of 102 Jepsen etcd verdicts matched

kedge read from vendor/porcupine/jepsen/ (103 histories, MIT) replayed by src/cli.js corpus

The record

35 projects28 live30 measured

Every entry below is a thing that was measured, the file the number was read from, and the command that produces it again. If a claim here cannot show its working, it does not belong on the page.

666 to 0

Under fault injection, naive retry produced 666 duplicate side effects and sluice produced none, while refusing one call in five as indeterminate rather than guessing; the landing page serves those figures from the committed results file.

read from
chaos/results/latest.json
regenerate
git clone https://github.com/jamessuuu/sluice && cd sluice && cat chaos/results/latest.json
Screenshot of the sluice landing page showing its idempotent-execution comparison: 666 duplicate charges under naive retry versus 0 with sluice, next to a results table breaking down intent success rate and duplicate side effects.

Open sluiceRead the codeFull receipt

1 to 0

A privacy law that is not tested is a promise. Planting a token-shaped string in a gate answer proved it never reaches events.jsonl, and removing the redaction proved the test fails when it should.

read from
tests/redaction.test.mjs
regenerate
git clone https://github.com/jamessuuu/windlass && cd windlass && npm test
Screenshot of the windlass page headed "Three things this pipeline runner refuses to do, and the test that proves each", with the first refusal, that it will not run a model inside the runner, opened above the code that enforces it.

Open windlassRead the codeFull receipt

1

README command failing on a fresh install, missed by 51 green tests

proofpage's own README opened with a command that fails on a fresh install, and 51 passing tests never noticed, because every one of them ran inside the repo where the missing directory exists.

read from
README.md
regenerate
git clone https://github.com/jamessuuu/proofpage && cd proofpage && git show cf40975 --stat
Screenshot of the proofpage project page describing a real bug it caught in its own README: the first documented command failed with ENOENT because no examples directory existed, despite 51 passing tests.

Open proofpageRead the codeFull receipt

44

golden cases at 100% exact match, 0 enforced findings on its own CLAUDE.md, 0 measured rules shipped

Run on its own author's context file, chaff reports zero enforced findings, and that run is a committed eval rather than a demo; it ships zero measured rules today and says so in every line of output, because the evals that would admit one need paid model calls.

read from
evals/cases/
regenerate
git clone https://github.com/jamessuuu/chaff && cd chaff && pnpm install && pnpm vitest run --project eval -t dogfood
Screenshot of the chaff site showing its resident, on-demand and dropped token counts for a real CLAUDE.md profile: 5,904 resident, 184 on-demand, 109 dropped.

Open chaffRead the codeFull receipt

102 of 102

Jepsen etcd verdicts matched

kedge's linearizability checker agrees with Porcupine's published verdict on every one of the 102 vendored Jepsen etcd histories that carry one, and it says so from a corpus command anyone can re-run rather than from a README sentence.

read from
vendor/porcupine/jepsen/ (103 histories, MIT) replayed by src/cli.js corpus
regenerate
git clone https://github.com/jamessuuu/kedge && cd kedge && npm ci && node src/cli.js corpus
Screenshot of the kedge Raft simulator mid-run, showing a red "not linearizable" verdict with the witness operation that could not be placed anywhere in a consistent order, above the client history strip it was derived from.

Open kedgeRead the codeFull receipt

25 more are on the proof page, including the four where the tool caught its own author out.

All 30 findings

Talk to me

I read my own mail and I answer it. Tell me what is broken or what you are trying to build, and if it is a job for somebody else the first reply will say so.

Manila, Philippines, GMT+8. Within 24 hours. jameslorenzsantos@gmail.com

If a number on this site does not reproduce, send me the command and the output, and I will fix the page.

The same content exists as a file tree, tabs and a real terminal, and every command you watch it run is one you can type.

Elsewhere

The long version: career and every project

Just looking around

James Lorenz Santos, halftone portrait resolving into machine glyphs
Halftone on the left, binary glyphs on the right, one face. Generated from a photograph by a script in this repo, not drawn.

This is a portfolio you operate instead of scroll. You ask it something, it prints the answer, and it always shows the command it ran so nothing is hidden.

Seven agents built this site and each one answers for its own part of it. Press anything below and it will keep offering the next step.

The castSeven real agents that built this site, one lane each. Ask one something outside its lane and it hands you to the right one by name.
The storyFive chapters, 2021 to now, from university to the current role.
The work35 projects, ranked by strength. The 6 leads come first, and every card carries a proof tier saying how far that one actually got.

Session log

This is a portfolio you operate instead of scroll. You ask it something, it prints the answer, and it always shows the command it ran so nothing is hidden.

Seven agents built this site and each one answers for its own part of it. Press anything below and it will keep offering the next step.

The panel above is a workbench you can operate. Everything below is the same record as plain HTML, for a browser with JavaScript off or a crawler that does not run it.

Career

University of Santo Tomas · BS Information Technology · 2021 to 2025
Four years of IT at UST, BS Information Technology, class of 2025.
eBiZolution · Full Stack Applications Developer (intern) · Jan 2025 to Jun 2025
First professional codebase. Frontend work with React and Tailwind, plus the API and database layer behind it.
Kredit Hero · Software Engineer · Jul 2025 to Dec 2025
Full stack engineer on an AI credit application.
Lift Legal Marketing · AI Automation Developer · Jan 2026 to present
Current role. AI integration for legal marketing workflows, working GMT+8 against AEST.
Aldridge · AI and Automation Developer (contract) · May 2026
Building the AI practice at a US managed service provider, across internal operations and client service delivery.
Freelance · Independent AI consulting, alongside the roles above · Ongoing
Direct client work alongside the roles above. Increasingly the AI feature itself and the system around it, rather than general build work. Clients are described rather than named.
What is being built now · Side projects and experiments · 2026 onward
Agent systems, and the tools that make one engineer ship like a team. Labelled as in progress, because that is what it is.

Full career record on /about

Projects

  • sluice· 2026 · Live

    Exactly-once side effects for agent tool calls, plus human approval gates that survive a process crash.

  • windlass· 2026 · Completed

    Pipelines as typed graphs with verifier edges and human gates. The runner has no model inside it, and exit 3 means stop and wait for a human.

  • kedge· 2026 · Live

    A deterministic five-node Raft simulator with a linearizability checker, held to the published verdicts of 102 real Jepsen etcd histories.

  • flume· 2026 · Live

    Event-time windowing with watermarks, and a checker for the result, measured on three real streams whose lateness spans four orders of magnitude.

  • cofferdam· 2026 · Live

    Every crash point of a write-ahead log store visited under an explicit device model, then held against real process kills on NTFS and against node:sqlite.

  • driftwatch· 2026 · Completed

    A documentation-drift checker with exactly three outcomes, whose first real run across seven repositories reported ten failures and every one was a false positive.

  • proofpage· 2026 · Live

    A receipts page that refuses to print a number it did not measure, and which caught its own README lying about its first command.

  • claude-code-boundary-guard· 2026 · Live

    A PreToolUse hook that stops an agent in one project from writing into another: one file, no dependencies, and a self-test that has actually failed known-bad cases.

  • chaff· 2026 · Live

    Static analysis for CLAUDE.md, AGENTS.md and tool definitions. Every enforced rule ships the eval that measured its effect.

  • dipmeter· 2026 · Live

    Draws 230,059 located earthquakes at their real depth inside a transparent Earth against the 27 subduction surfaces USGS modelled, and separates out the 106,108 whose depth a locator assigned rather than solved.

  • orrery· 2026 · Live

    Positions 1,562,531 catalogued small bodies every frame by solving Kepler's equation in a vertex shader from their own published orbital elements, and says on the page why the default view smears the gaps it is famous for.

  • snapgauge· 2026 · Live

    Contract tests for MCP servers. Snapshot the schema and behavior, then fail CI when the next version moves.

  • provenote· 2026 · Live

    A C2PA honesty test: drop an image, see its full provenance chain and exactly what that chain cannot prove, with nothing leaving your device.

  • dogwatch· 2026 · Live

    A scheduled agent pipeline that publishes every run: cost, gate decisions, refusals, and the runs where it found nothing.

  • tiltmeter· 2026 · Live

    Tells you when a new model release moves your agent harness off true. Every reading reproduces from a pinned commit.

  • shipgauge· 2026 · Live

    A browser-ML shippability study: what a model actually costs to ship, measured in a real browser, with n printed.

  • assay· 2026 · Live

    Brand kits as pure functions: one JSON config in, thirteen byte-identical artifacts out, and a contrast gate that refuses to generate below 3:1.

  • galley· 2026 · Live

    Renders a repository's real commits, CI results and test counts into a release video, with every number on screen labeled by the source it came from.

  • halo-halo· 2026 · Live

    A legible Taglish code-switching segmenter: every switch point shown, every label traced to a readable rule, down to the affix inside a single word.

  • swage· 2026 · Live

    ASL fingerspelling handshape practice, graded by a classifier the project trained and evaluated itself, on a device that never sends the camera feed anywhere.

  • graticule· 2026 · Live

    Paste your notes and get a map of how their wording relates, embedded entirely on-device, with the technique's own blind spot demonstrated on the page.

  • clarifier· 2026 · Live

    Paste a CSV and let a physics simulation arrange it, then read a computed number that says whether the arrangement beat a plain scatter plot.

  • pitman· 2026 · Live

    Shows exactly what a browser speech model heard on your speech, with per-word confidence and a diff against what you meant, entirely on-device. No accent scores.

  • orphanage· 2026 · Live

    A crawl-graph auditor that found 40 problems on its first real site, and was wrong about all 40.

  • aeo-lab· 2026 · Live

    A crawler-access scanner whose main feature is reporting what it cannot prove.

  • polis· 2026 · Live

    Reads an agent ecosystem off disk, renders it as an isometric city you can walk around, and audits it while reading.

  • carillon· 2026 · Live

    Your typing rhythm becomes sound in the browser, and a checker enforces that nothing is uploaded.

  • tally· 2026 · Completed

    An offline supply-chain and licensing auditor for npm projects, whose first real run flagged its own SPEC.md as a leaked test file.

  • consentry· 2026 · Completed

    A rules-based linter for US A2P 10DLC SMS campaign registrations that detects documented rejection causes offline and refuses to predict approval.

  • Klik· 2026 · Live

    A hiring app where clients and freelancers match by swiping. Live on Cloudflare.

  • Business Operations Platform· 2026 · Live

    An operations platform a real business runs on: purchase orders, stock takes, approvals.

  • AGENTJAMES Control· 2026 · Live

    A desktop mission control for every project on one machine. Local only, and it still works with the network off.

  • ClubScope Insight Engine· 2026 · Live

    A concept prototype where the language model is never allowed to produce a number: typed tools compute, every figure cites its evidence, and a verifier recomputes it before anything renders.

  • Kredit Hero: AI Credit App· 2025 · Completed · Kredit Hero

    Full stack work on an AI credit application, as a software engineer at Kredit Hero.

  • Agent James: Agent Console· 2026 · Live

    This site: an IDE you operate, where every claim carries a receipt.

Every project in full on /projects