Dots is a payment infrastructure platform that simplifies the complexities of payments, payouts, onboarding, and compliance. I joined the team in summer of 2024, working in-person in their San Francisco office.
I began by working on improving the dashboards and API for our existing Payouts and Flows products. A few things I worked on:
I shipped over 50 PRs across our apps. Beyond existing products, I helped with new projects like accounts payable, an internal stats dashboard, and various experiments.
A bigger project I worked on at Dots was accounts payable. While existing products for this existed, the goal was to build a better system to meet our specific needs.
My work on the UI involved building pages from scratch with custom cards, form modals, tables, and more. Some specific parts of this include:
The backend involved over 30 API routes to manage all of the moving parts involved with the product. I contributed to various parts of this, as well as writing new routes for OCR.
A requirement in the payable creation flow was uploading an existing invoice PDF to auto-fill the form fields with data from the file.
Our initial solution was retrieving invoice content via an external OCR API, then uploading the image to S3 on creation for long-term storage. However, we still wanted to try building custom document OCR to explore any potential benefits.
I experimented with LLMs, running evals with Braintrust. This involved testing different models, prompting techniques, PDF processing parameters, etc. The process was essentially extracting structured outputs and comparing accuracy against external providers with evaluation methods through autoevals.
In a few days, I achieved a 33x cost improvement, approximately equal inference times, and highly consistent OCR accuracy!
I visited the Github office the first week I arrived in San Francisco, where they have a really cool screen showing a live animation of user activity. The Dots office had an idle TV screen, so I built a similar animation for our internal stats.
The architecture involved maintaining a global clock in the React context to keep all components in sync, updating & appending transfers through a staging queue, and processing geographic data to display arcs on the globe.
The final product was a real-time monitoring dashboard that keeps track of live activity and metrics. I also wrote a bash script to refresh the server and browser on a regular interval to avoid slowdowns.
I integrated into the team's workflow pretty quickly, shipping code from day one. I'm very glad I got to learn a lot by working on a variety of projects across the stack.
Getting to know the team over these 4 months was amazing, and I'm grateful to them for taking a chance on me. I loved our walks to Street Taco, Ivan complaining about the Whole Foods sandwiches, and talking about microplastics in our Fairlife. There was a lot to learn from everyone there, and I'm sure the future of the company is bright.