mickey.bushman
menu

// principal product manager — ai / computer vision / embedded payments

Product management for AI systems, demonstrated in working code.

This portfolio is a functioning RAG application. Upload a document and ask questions — answers come back grounded and cited. Or paste a job description and let the same engine give you an honest assessment of my fit. Built by Mickey Bushman to show how I think about AI products, retrieval, and evidence.

2 of 3
of ServicePower's strategic product pillars, owned solo via multi-agent AI orchestration
$1.8M
in combined contract value from a 0→1 product across two Fortune 500 accounts within 12 months of MVP
18 yrs
building SaaS, fintech & AI/CV products at a 6× Gartner Magic Quadrant Visionary
01–02

Try it live

One grounded-answer engine, two applications: point it at your document and ask questions, or point it at my careerand paste a job description for an honest fit assessment. Same retrieval, same grounding rules, same willingness to say “not covered” — that's the product thesis, live.

retrieve → ground → citerefuses when unsureevals: 8/8 passing ↗

Upload a PDF, DOCX, or TXT — or load the sample — and get answers grounded strictly in it, with citations.

Drop a document here
PDF, DOCX, or TXT · click to browse
— or —
peek at the sample first ↗ (a one-page warranty policy)

Documents are indexed in memory for this session only and processed via the OpenAI API — nothing is stored, but please don't upload confidential material to a demo.

03

How it works — and why it works that way

The pipeline is deliberately boring; the product decisions are where the thinking is. Every number below is the live configuration of the demo above.

  1. 01 ingest

    PDF / DOCX / TXT parsed to text, with a page map for PDFs so answers can cite real page numbers

  2. 02 chunk + embed

    ~900-char windows, 150-char overlap, snapped to sentence boundaries; embedded with text-embedding-3-small

  3. 03 retrieve

    question embedded, cosine similarity over every chunk, top-4 passages above a relevance floor

  4. 04 generate + cite

    passages + a strict grounding prompt streamed through gpt-4o; citations returned with the answer

decisions & trade-offs
Chunks snap to sentence boundaries

Fixed windows are simple and predictable, but a chunk that cuts mid-sentence makes a bad citation. The chunker prefers a sentence or paragraph break in the back half of each window — trading a little size uniformity for passages a human can actually verify. Citation precision is the product; chunking serves it.

“Not covered” is a first-class answer

Retrieval keeps only the top-4 passages above a relevance floor, and the prompt mandates an explicit “the document doesn’t cover this” over guessing. A document assistant that pads weak context and hallucinates confidently is worse than useless — trust is won on the questions it refuses to answer.

Retrieved text is data, not instructions

Uploaded documents are untrusted input. The generation prompt frames every passage strictly as reference data, so a document that says “ignore your instructions” is quoted, not obeyed. Prompt injection is a product-safety requirement, not an engineering afterthought.

Ephemeral by design

Documents live in an in-memory, session-scoped store with a 30-minute TTL — never written to disk or logs, and usage analytics never see upload contents, filenames, or question text. Document text does transit the OpenAI API for embedding and generation, and the upload screen says so plainly — trust needs disclosure, not just architecture. The store sits behind a storage-agnostic interface, so the documented production path (Postgres + pgvector) touches one file.

Right-sized models — re-bid on evidence

Right-sizing isn't 'always use the small model' — it's letting the eval set the capability floor. Generation launched on gpt-4o-mini; the eval's false-answer trap caught it presenting one fee as a different price through two prompt-hardening attempts, so generation was re-bid a tier up to gpt-4o — trading ~15x token cost for a 0% false-answer rate, at a scale where that's fractions of a cent per question. Same principle as my multi-agent operating model: capability matched to the job, revisited when the evidence says so.

Streaming, because latency is UX

Answers stream token-by-token over SSE rather than arriving in one block. Time-to-first-token is the latency users actually feel; a two-second silent wait reads as broken, the same answer streaming immediately reads as fast.

Measured, not vibes

Every claim on this page is measured, not asserted. A 19-item golden set runs through the exact production pipeline — 13 answerable questions scored for grounded accuracy, 4 unanswerable ones scored for honest refusal, and 2 prompt-injection probes — with regression floors that fail the suite if any prompt or parameter change degrades trust. Verified results: 100% grounded accuracy, 0% false-answer rate, and 100% injection resistanceat sub-second mean latency. The false-answer trap earned its place: it caught the original model confidently presenting a different dollar figure from the same document as a price the document never states — a fabrication no demo click would surface, which survived two prompt-hardening attempts before an evidence-based model re-bid (above) fixed it. It's pinned as a permanent regression test. The fit-check runs the same discipline: a four-JD calibration set verifies it concludes Strong on a bull's-eye role, honestly concludes Limited on a genuinely misaligned one, refuses non-JD input, and never phrases a gap as a personal deficiency — an assessor publicly calibrated to say no. The whole harness ships with the source; one command reproduces every number here. “How do you know it's good?” is a product question; this is the answer.

04

How I ship: multi-agent AI orchestration

I carry a two-to-three-person product scope solo by running my work through a coordinated team of specialist AI agents — with handoff contracts, independent validation at every gate, and one human in charge. It's an operating model, not a prompt trick, and it runs my day job.

8 + 1
specialist agents plus one routing coordinator, each owning exactly one artifact type
4 checks
completeness, consistency, ownership, authority — run at every handoff, no exceptions
1 human
customer judgment, prioritization, and anything irreversible stay with me