This repository is a production-grade Taiwan SBIR (Small Business Innovation Research) grant proposal assistant, shipped as two parallel product lines: a full web SaaS (Cloudflare Workers + Hono backend, React 19/Vite frontend) and a Python Model Context Protocol (MCP) skill for Claude Desktop/Codex. In production it interviews users through a 29-question conversational wizard, extracts and enriches candidate answers (including from uploaded reference documents via a queued OCR/chunking/Vectorize pipeline), verifies company SBIR eligibility against Taiwan's g0v registry, generates 7-9 proposal sections through streaming LLM calls with RAG context, scores output on a 6-dimension quality radar, and exports Word documents. Users authenticate via Google OAuth, pay per AI credit (or bring their own API keys encrypted with AES-GCM), and the service is deployed as a multi-tenant app at sbir.thinkwithblack.com. Architecturally it is an edge-deployed serverless backend (D1 SQLite, R2 object storage, Vectorize, Queues on Cloudflare) plus a standalone Python MCP server. The two implementations are deliberately aligned via shared_domain JSON rule files (financial caps, ROAS benchmarks, quality rubrics, synonym dictionaries, proposal structure), an unusual and sensible way to prevent domain drift between languages. Strong engineering patterns stand out: deterministic-over-LLM financial calculators (no hallucinated budgets), candidate-answer provenance tracking (user vs extraction vs enrichment), a fail-closed draft gate requiring all 29 questions confirmed, an AI response cache, and an MMR diversity re-ranker. Though classified as an application, this repo is hybrid in nature: it embeds a substantial curated domain corpus (84+ knowledge files, 122 FAQs, industry case studies, methodology guides) and machine-readable business rules with standalone value as a data asset. The main risks are maintenance-focused: the Python MCP server and TypeScript SaaS duplicate domain logic and drift (the MCP MOEA stats tool is a stub while the SaaS calls Tavily live); questions.json is triplicated across three directories; committed debug files (test_*.mjs, .dev_log*.txt) expose raw AI request/response dumps; the frontend ProjectDetails page is a roughly 2,400-token monolith; and several features (pitch deck, voice mode, project-data v2 refactor) are only partially implemented per planning docs. Tooling is current (React 19, Vite 7, Hono, Vercel AI SDK) and the repo is actively developed, but accumulated hygiene debt and cross-implementation divergence are the main factors a reuser should weigh.