Engineering6 min readCategorizing Merge Requests with an LLMSee how Fullscript uses an LLM, a priority-ordered decision tree, and a daily CronJob to categorize every merge request.Read investigation
Technology7 min readFinding The Line: What to Ask AI, What to Ask CodeSee how we paired an LLM with deterministic code to auto-crop Supplement Facts labels, and how we decide what to ask AI versus code.Read investigation
Engineering27 min readTeaching Ruby to Rank: Building a Learning to Rank Ruby GemSee how Fullscript fixed search with learning to rank in Ruby: NDCG, judgment lists from clicks, XGBoost reranking, and our upcoming ltr gem.Read investigation
Engineering4 min readMCP-inception: Why we built EKG, the MCP of MCPsSee how Fullscript built EKG, a single MCP gateway that connects any AI client to our services, with guardrails in one place.Read investigation
Technology10 min readA Sale Is Just a Row: How Fullscript Ships Promotions Without DeploysSee how Fullscript turned promotions into database records with date windows, cutting sales from multi-deploy projects to one reviewable data change.Read investigation
Engineering14 min readBuilding Fullscript Assist, Part 3: One Writer Per SessionHow we guarantee one writer per conversation as Fullscript Assist scales across nodes: a durable lease for ownership, an epoch fence for writes.Read investigation
Engineering11 min readBuilding Fullscript Assist, Part 2: Keeping the Context SmallSee how we treat the context window as a budget in Fullscript Assist: on-demand skills, isolated sub-agents, and auditable compaction.Read investigation
Software7 min readScaling Shopify's maintenance_tasks (Part 3): Observability and Governance for the GemSee how Fullscript added durable logs, threaded Slack alerts, metrics, and self-cleaning governance around Shopify's maintenance_tasks gem.Read investigation
Engineering16 min readBuilding Fullscript AssistHow Fullscript rebuilt its clinical AI assistant with Elixir, BEAM processes, and MCP to support 120K+ providers with stateful conversations.Read investigation
Engineering10 min readUsing an LLM as a Test CompilerEnd-to-end tests are usually expensive to maintain or too flaky to trust. We treated an LLM as a compiler to get tests that are neither.Read investigation
Engineering6 min readFeature-Flagging a Major Design System UpgradeShipping a major mobile redesign without stopping releases: adapters, build flags, and parallel design systems.Read investigation
Engineering5 min readTeaching Our Merge Requests to Teach BackHow to improve AI code reviews: turn merge requests into learning tools with context, patterns, and engineering decisions.Read investigation