How I work
- Finding the problem
- Nearly everything here began as a problem that was already costing someone time and did not have a name yet. I write the problem down before I write anything else, and most of them do not survive that page. The ones that do are on this one.
- The decision before the code
- Every system here has one constraint chosen first, and the rest follows from it. Stock Lens reuses the NetSuite session you are already signed into, so there is no integration record, no OAuth and no server to secure. Milestoner keeps run state in files instead of a conversation, so every agent session starts clean and a finished run still reads a week later. I would rather spend a day arguing about that choice than a month refactoring around it.
- Product design
- Scope, flow, naming, the empty state, and what the thing refuses to do. quienpagapp has no signup, because asking a group of friends to create accounts kills it on the first message. Milestoner never lets an agent clear its own block, because that call belongs to a person. Most of the design work is subtraction.
- Leading delivery
- Tech lead on NetSuite and SuiteCommerce: I scope the work, split it across the team, decide the shape of each integration and answer for it in production. ERP customizations, storefronts and the data flows between systems that were never designed to talk to each other. The part that has to keep working long after the project ends.
- Stack
- TypeScript, Node.js, React, Next.js and Astro. Postgres with vector search, and LLM pipelines that turn email, PDFs and receipts into validated data. SuiteScript, SuiteCommerce and SDF. Chrome Manifest V3, Unity and C#. Vercel, Render, Neon and Supabase. Further back, Java, WebRTC and WebDAV.