See the AI, not just the claims.
Everything below is a working feature I built and put on my own site — grounded in my real materials, transparent about what it's doing, and guard-railed so it behaves. Poke at it.
Ask about my work
Ask a question about my background, or paste a job description for an honest fit read. Answers come only from my vetted materials, cite the relevant case study, and will tell you when something isn't known — no making things up.
Grounded in my own case studies, résumé, and narrative — with sources. Built to say "I don't know" rather than guess.
Plain English to SQL, live
This is the capability from my conversational-analytics case study, in miniature. Ask a question about a sample campaign dataset and watch each step: it writes the SQL, confirms it's read-only, runs it in your browser — and if a query fails, it catches the error and corrects itself. You see the whole chain, because an answer you can't audit isn't trustworthy.
The model only ever writes a read-only SELECT against the schema above. The query runs in your browser on sample data — nothing real is touched.
Book metadata, with a human in the loop
In trade publishing, metadata is what makes a book findable — and findable is revenue. Paste a chapter, an excerpt, or a rough draft blurb, and this assistant drafts the commercial metadata from the text itself: a marketing description grounded in what's actually on the page, reader-search keywords, and subject categories drawn only from a verified subset of the real BISAC vocabulary. Then comes the part that matters: nothing is final until a human approves it. The model drafts; the responsible expert decides.
Categories are constrained to a verified subset of the real BISAC subject headings and validated server-side — free generation hallucinates plausible-but-wrong codes, so the model isn't allowed to invent one. The sample chapters are original fiction written for this demo, so the model can't lean on memorized knowledge of a real book — everything it produces is extracted from the text in front of it. Nothing you paste is stored, logged, or used to train anything.
The product decisions behind it.
A feature is only as good as the judgment around it. Six calls, applied to every feature above — the same ones I'd make shipping AI in production.
Nothing answers from thin air.
The assistant is given a curated knowledge base of my actual case studies and résumé — and nothing else — and says "I don't know" rather than invent a fact. The SQL demo sees only a fixed sample schema. The metadata assistant works only from the text you paste: it's forbidden to add plot, names, or details the page doesn't state.
You can audit every answer.
The SQL demo shows the exact query before running it. The assistant points to its source case study. Every metadata category carries its BISAC code, a one-line rationale, and how many independent samples agreed on it — so a shaky pick reads as shaky. If you can't see how an answer was produced, you can't trust it — so the reasoning is visible everywhere.
Scoped, and hard to misuse.
The assistant declines off-topic and instruction-override requests. The SQL is constrained to a single read-only SELECT, run in your browser. Metadata categories are constrained to a verified subset of the real BISAC vocabulary and validated server-side — the model can't invent a code. All inputs are length-capped, and pasted text is treated as data, never as instructions.
Cheap by design, not by accident.
Everything here runs on Claude Haiku 4.5 with small output limits, per-visitor rate limiting, and a monthly spend ceiling. When the model is briefly unavailable, the features fail gracefully — and honestly — instead of breaking the page. The full cost math is below, because "what does each answer cost" is a product question, not an afterthought.
The model drafts. A person decides.
The fit reader names real gaps instead of papering over them. The metadata assistant won't treat anything as done until a human approves, edits, or rejects each section — and it refuses input it can't honestly treat as book text rather than faking an answer. Where judgment matters, the expert stays in charge.
Measured, not asserted.
Success isn't "it talks." It's accuracy with zero fabrication, SQL that runs correctly the first time, and metadata that survives structural checks and independent re-classification. And it's tested, not claimed — the evaluation section below is the receipt.
What every answer costs.
A demo that impresses and a product that's economical at scale are different things — the gap between them is where AI features die. Here's the honest math on this page's features, and what changes when the volume gets real.
Per answer. Each assistant reply is a few thousand input tokens and a few hundred out, on a small fast model. Cost per call is tokens times price — so the first decision is never "which model is smartest," it's "what's the cheapest model that clears the quality bar." Here, that's Haiku.
The static context, when cached. Every request resends the same grounding corpus; at this traffic that's fine, but at production volume you'd cache the static prompt — cached input tokens are roughly a tenth the price. Batch the non-interactive work and the curve bends further.
Per-visitor rate limits, capped output lengths, and a monthly spend ceiling at the account level. Costs that can only fail loudly, never silently. If this page goes viral, it throttles — it doesn't bankrupt.
The numbers here are small. The discipline is the point: cost per transaction, modeled before launch, with a kill-switch — the same way I'd hold a production AI feature to a cost-per-workflow number before scaling it to real volume.
How I know it's good.
Probabilistic systems don't get a pass on quality — they get a different kind of test. The assistant on this page runs against a golden set before changes ship: 29 questions covering the facts it must get right, the gaps it must admit, the questions it must refuse, and the injections it must shrug off. An LLM judge grades each answer against required facts and forbidden behaviors.
Two consecutive clean runs, this build. The set grows with the site — it began at 26 (first-ever run: 21/26) and now covers 29. Every failure has been a real catch; the newest are below, because an eval that never fails isn't measuring anything.
Factual accuracy (locked metrics, verbatim), gap honesty, grounding refusals (facts it must NOT claim to know), prompt-injection resistance, and job-fit reads.
The judge is the same model family as the system under test — a real weakness, disclosed. This build gives it the knowledge base so it can tell grounded facts from invented ones; it still catches drift well, and can still share blind spots. Golden answers are human-written, which bounds the damage.
The marketing copy gets structural checks, not a subjective score — valid JSON, categories verified against the BISAC vocabulary server-side, invalid codes rejected — because "is this description better" has no objective golden answer, and pretending otherwise would be eval theater. The category picks do get a measured confidence, just not by asking the model to score itself: that produced a decorative number pinned near the top no matter the input. Instead the text is classified three times independently, and a category's confidence is how often the model agrees with itself — unanimous picks stand, one-off picks get flagged for a human. Agreement I can measure; a model's self-assessed confidence I can't trust.
Bring your own AI.
If an assistant is part of how you evaluate candidates, this site is built to be read by it — two doors, lightest first.
The résumé, as plain markdown.
Grab smithai.me/resume.md and paste it into any AI along with your job description for a fit read — no integration, no parsing a PDF. llms.txt gives an agent the map of everything else here.
An MCP server, if your AI speaks it.
Add https://smithai.me/api/mcp as a custom connector (Model Context Protocol, streamable HTTP, no auth) and your assistant gets four tools: ask_about_ryan, check_fit, get_case_study, and get_beyond_the_resume — the same vetted corpus and honesty rules as the assistant above, plus depth that doesn't fit a résumé: the technologies he actually works with (and the ones he won't claim), a side build, his values, and how he works.
It names the gaps, on purpose.
Ask check_fit about a role Ryan isn't right for and it will say so — candid gaps are a required part of every fit read, because a fit read that only flatters is worthless. Same rate limits and spend ceilings as everything else on this page; nothing you send is stored.