All selected work

Inbox to action

Grounded replies. A human when it matters.

/05
MY ROLE

Developer · Rental inquiry automation

STATUS

Public, production-derived release

TECHNOLOGIES

Node.js · Gmail API · Firestore · LLM APIs

tests/reliability/tour_preflight.test.js
test('malformed response (not YES/NO) → NO (fail closed)', async () => {
  const { tourPreflightGuard, _bustPreflightCache } = freshGemini();
  _bustPreflightCache();
  mockFetchOnce('Hmm, this is a tricky one because the lead might want a tour');

  const r = await tourPreflightGuard("ambiguous message");
  assert.equal(r.result, 'NO');
});

test('"MAYBE" response → NO', async () => {
  const { tourPreflightGuard, _bustPreflightCache } = freshGemini();
  _bustPreflightCache();
  mockFetchOnce('MAYBE');

  const r = await tourPreflightGuard("ambiguous");
  assert.equal(r.result, 'NO');
});
ORIGINAL SOURCE EXCERPT

Open it.
Inspect the work.

146 tests passed · Public source

The public implementation includes the message-processing pipeline, operator dashboard, and a reproducible regression suite. The tests exercise reply routing, verification, and failure handling with mocked external services.

tests/reliability/tour_preflight.test.jsORIGINAL EXCERPT
test('malformed response (not YES/NO) → NO (fail closed)', async () => {
  const { tourPreflightGuard, _bustPreflightCache } = freshGemini();
  _bustPreflightCache();
  mockFetchOnce('Hmm, this is a tricky one because the lead might want a tour');

  const r = await tourPreflightGuard("ambiguous message");
  assert.equal(r.result, 'NO');
});

test('"MAYBE" response → NO', async () => {
  const { tourPreflightGuard, _bustPreflightCache } = freshGemini();
  _bustPreflightCache();
  mockFetchOnce('MAYBE');

  const r = await tourPreflightGuard("ambiguous");
  assert.equal(r.result, 'NO');
});

Exact regression tests: ambiguous or malformed model output must not authorize a tour reply. External AI calls are mocked in this suite.

146 of 146 reliability tests passed on September 14, 2026. No live Gmail messages were sent. Production screenshots containing applicant information are excluded.

A real problem.
A considered solution.

Rental inquiries arrive by email, but answers depend on the correct property record, the intent of the message, and facts that may be missing or ambiguous.

What I worked on.

I built a workflow that ingests Gmail leads, matches them to Firestore records, drafts source-grounded replies, checks factual claims, and escalates uncertain or sensitive requests.

INTERACTIVE WORKFLOW EXPLORERILLUSTRATED SYSTEM LOGIC
01

Email intake

Gmail messages are ingested and normalized. The portfolio release uses synthetic fixtures.

A guided explanation of the project architecture. This explorer does not connect to production systems.

01

Ground responses in records.

Normalized property matching and scoped context keep one property’s facts from leaking into another reply.

02

Verify before sending.

A second-pass claim verifier and deterministic guards can block a response. Missing information goes to a person.

03

Test failure paths.

The public release documents 146 reliability tests with mocked Gmail, Firestore, and model calls, plus flags for staged rollout.

A source-available release with synthetic fixtures, clear routing boundaries, and a reliability suite that makes the decision process inspectable.

Public examples are synthetic. The interactive explorer illustrates routing; it does not send email or call an AI model.

IMAFE Incognito

Let’s build
what’s next.

Arlington, TX · Open to Seattle and US relocation