Anthropic Application: Extended Essays
Anthropic Application: Extended Essays
This page contains longer versions of my application essays for context.
Zero-to-One
I will describe two projects, one from my day job (Triaging Assistant) and one from open source (UpscalerJS).
Triaging Assistant
In early 2024, a product manager and I were asked to find ways to apply AI to our team’s support burden. Support consistently ranked as one of our biggest time sinks.
I started by analyzing our Slack support channel. 22% of threads had no team tagged at all, requiring a manager to manually route them. Of the threads that were tagged, 43% were tagged incorrectly and had to be retagged. Managers were spending hours each week figuring out who should answer what.
I proposed building a triaging assistant: predict which team should handle a thread, and surface that prediction to whoever was doing triage.
I started with research. I compared multiple approaches: LLM-based classification (without fine-tuning), SVMs, Random Forest, and different text representations including Word2Vec, Doc2Vec, and TF-IDF. XGBoost with CountVectorizer performed best: 82% accuracy, sub-10ms inference, 4MB model size.
I built the system end-to-end. A Slack bot intercepted incoming threads. A dataset pipeline pulled 10,000+ historical threads for training. A FastAPI backend served predictions. A frontend let users review predictions and correct mistakes.
The system was designed to be self-improving. Correct predictions were automatically added to training data. Incorrect predictions, once corrected by a user, fed back as new labeled examples. A nightly retrain job meant the model improved over time without manual intervention.
It ran for about four months. Then the circumstances changed, which I describe below.
UpscalerJS
In 2020, I wanted to know if performant image upscaling was possible in the browser. A fast browser-based upscaler could enable privacy-preserving image processing, offline functionality, and use cases where network bandwidth is limited but device compute is available.
Turns out it is possible. I built UpscalerJS, a TensorFlow.js library that runs several upscaling models entirely client-side. I wrote the code, the tests, and all of the documentation. I gave talks at conferences and appeared on podcasts to explain the approach.
The library is still downloaded and used. I have deprioritized active development because TensorFlow.js is showing its age relative to newer frameworks like Transformers.js, and the image generation landscape has changed significantly. I am evaluating whether to sunset the project, port it to a different framework, or continue maintaining it as-is.
Kill or Pivot
The triaging project did not start as a triaging project.
The original directive was broad: find ways to use AI to reduce support burden. My first approach was to answer questions directly. If users are asking questions in Slack, a bot that answers them seemed like a reasonable starting point.
I spent a few months on this approach. It did not work for two reasons. First, our documentation was in poor shape: incomplete, out of date, sometimes wrong. RAG over bad docs produces bad answers. Second, the questions being asked were not documentation questions. Users were asking things like “Why is my job failing?” or “Who owns the foobar service?” These require real-time knowledge and institutional memory that were undocumented.
I proposed a pivot. I analyzed historical thread data, quantified the triage problem (22% untagged, 43% mistagged), and pitched a classification system to leadership. They greenlit it. That became the triaging system described above.
The triager ran for four months. Then IT restructured how support worked. They moved from free-form Slack questions to a structured ticketing form that required users to select a team upfront. The number of untagged threads dropped to near zero overnight. Mistagged threads were still an issue, but at lower volume. I ran the numbers and concluded that the remaining problem did not warrant a dedicated solution and team. I presented a sunset case to leadership. We shut it down.
I do not believe in keeping things around for their own sake. The same rigor that goes into building should go into deciding when to stop.
A similar situation is happening now with a different effort. I founded our company’s MCP working group in spring 2025. We started with a set of motivating questions: security posture, coordination of who builds what, that sort of thing. Most of those questions have now been answered. New MCP-specific questions have not emerged. I have now sunset the group in favor of newer efforts around Skills and A2A.