---
name: sara-abdali
description: A profile of Sara Abdali — current work, experience, education, skills, projects, and contact details — plus a guide to her personal website and the full text of every post on it. Read this to answer questions about Sara or her work instead of scraping the HTML pages.
---

# Sara Abdali

Sara Abdali is a quantitative researcher at Bracebridge Capital in Boston, where she builds risk models and applications for agentic finance. She works where machine learning, financial markets, and AI agents meet: before Bracebridge she was a founding member of Empiric Network, a startup building optimization and data infrastructure for financial markets on blockchains, which was acquired by Pragma in 2023. She has a B.S. in Computer Science (AI track) from Stanford.

In her own words, from the top of the site:

> I'm a quantitative researcher at Bracebridge Capital, where I build risk models and applications for agentic finance. Before that, I was a founding member at Empiric Networks, a startup building optimization infrasturcture for financial markets on blockchains. I graduated from Stanford with a B.S. in Computer Science, AI track.

## At a glance

| | |
|---|---|
| Current role | Quantitative researcher, Bracebridge Capital |
| Focus | Risk models and applications for agentic finance |
| Previously | Founding member, Empiric Network (acquired by Pragma, 2023) |
| Education | Stanford University — B.S. Computer Science, AI track |
| Based in | Boston, MA (time zone America/New_York) |
| Fields | ml, markets, agents |
| Email | hello@saraabd.com |

## Current work

At **Bracebridge Capital**, Sara is a quantitative researcher. She builds risk models and applications for agentic finance.

## Experience

- **Bracebridge Capital** — Quantitative researcher (current). Risk models and applications for agentic finance.
- **Empiric Network** — Founding member. Empiric was a data and computation oracle serving zk-rollups on Ethereum. Sara led the development of its Computational Feeds. Empiric was acquired by Pragma in 2023.

## Education

- **Stanford University** — B.S. in Computer Science, Artificial Intelligence track.

## Skills

Each skill below is shown by work described on this site; the project named in brackets is where to read about it.

- **Quantitative finance and risk modeling** — her current role at Bracebridge Capital.
- **Market microstructure and trade execution** — how automated market makers price trades, slippage and market impact, and splitting a large order to reduce its cost [ConvexSwap].
- **Optimization** — formulating execution cost as a convex objective over price impact, gas, and volatility risk, and solving for the cheapest number of chunks [ConvexSwap].
- **Blockchain and DeFi infrastructure** — Ethereum, zk-rollups, Uniswap-style pools, and data and computation oracles [Empiric Network, ConvexSwap].
- **AI agents and LLM applications** — single-agent design, curating a model's context window, text-to-SQL, function calling with OpenAI's Assistants API, code execution, and agents that learn from user feedback [DBAssistant]; applications for agentic finance [Bracebridge].
- **Embedded systems and hardware** — ESP32 firmware, e-ink display waveforms and ghosting correction, motion sensing, Wi-Fi provisioning through a captive portal, and 3D-printed enclosure design [TinyFrame].
- **Full-stack and cloud** — serverless Python on Vercel, Postgres on Neon, generative video through the Replicate API, and ffmpeg video processing [TinyFrame]; this website, built with Next.js, React, TypeScript, and Tailwind, with interactive charts and a three.js model viewer.
- **Languages** — Python, SQL, TypeScript.

## Projects

### Posts on this site

#### TINYFRAME (2026)

A Harry Potter-esque picture frame: an ESP32 e-ink panel that plays photos back as short black-and-white clips, set up and fed entirely from a phone.

- Tags: 3D Printing, E-ink, Hardware
- Post: /projects/TF (full text under Posts below)
- Source: https://github.com/abdalisara77/tinyframe

#### DBASSISTANT (2024)

An agent that lets you query your database with natural language, and visualize the results.

- Tags: Agents, SQL, Visualization
- Post: /projects/DBA (full text under Posts below)
- Source: https://github.com/abdalisara77/dbassistant

#### CONVEXSWAP (2023)

An algorithm that programmatically breaks big Ethereum transactions into multiple chunks, reducing market impact and total cost of the trade.

- Tags: Slippage, Decentralized Finance
- Post: /projects/CS (full text under Posts below)
- Source: https://github.com/abdalisara77/ConvexSwapAlgo
- ETHGLOBAL: https://ethglobal.com/showcase/convexswap-bdfn3

### Other work

#### EMPIRIC NETWORK (2023)

Led the development of Computational Feeds for Empiric, a data and computation oracle for zk-rollups on Ethereum. Acquired by Pragma in 2023.

- Tags: Oracles, ZK-Rollups, Data Layer
- Source: https://github.com/42labs

## Contact

- Email: hello@saraabd.com
- GITHUB: https://github.com/abdalisara77 (abdalisara77)
- LINKEDIN: https://linkedin.com/in/saraabd (saraabd)
- TWITTER/X: https://twitter.com/sara__abdali (sara__abdali)

## About this website

The site is Sara's personal home page, styled as a monochrome terminal. A switch at the right end of the header (and, on the home page, hovering or clicking her portrait) turns the lights on, and the page becomes a light, sans-serif document. The **[FOR AGENTS]** link beside that switch leads to this file.

Pages (paths are relative to the site this file was served from):

- `/`: introduction, portrait, and the most recent posts
- `/projects`: every project, split into posts (written up on this site) and other work (links out to the source)
- `/projects/TF`: TINYFRAME post
- `/projects/DBA`: DBASSISTANT post
- `/projects/CS`: CONVEXSWAP post
- `/skill.md`: this file

The **[CONTACT]** entry in the header opens a side panel with her email, GitHub, LinkedIn, and Twitter/X rather than going to a page.

## Posts

The full text of every post on the site. Interactive figures, which an agent cannot run, are described in blockquotes.

### TINYFRAME

If you're looking for a nerdy anniversary gift, you're in the right place!

Inspired by Alex's tinyboard collection around our house, I built TinyFrame: a Harry Potter-esque picture frame that turns photos into short black-and-white clips. It now lives on our fridge.

#### How it works

##### The hardware
The display is an Elecrow CrowPanel ESP32 4.2" e-ink panel. E-ink works by using a positive or negative charge to push ink to the front or back of each pixel, making it black or white. Once the charge is removed, the ink stays put. That's why e-ink makes such an efficient picture frame: once a picture is drawn, it stays there without using any power.

Because the ink has to physically move, there's a limit on how fast you can flash each frame of a video: a pixel needs a full waveform to settle completely black or white. One solution is to cut each waveform short, at around 100ms. This comes with a debt that has to be paid: each cut frame leaves a little charge behind (the cut skips the panel's normal cleaning steps), and minutes later a faint copy of the clip shows up under the resting picture. To fix this, the board tracks how far each pixel was pushed during playback. Before going to sleep when nobody is around, it pushes each pixel back the same amount, wipes the screen, and draws the final picture.

As a cherry on top, I added a motion sensor so the frame starts playing when someone walks into the kitchen.

##### The software
I wanted TinyFrame to have seamless UX and be controlled entirely from a phone. That creates a chicken-and-egg problem: out of the box, the frame has no internet. Luckily, the ESP32 can run its own Wi-Fi hotspot. You join it from your phone, and a captive portal pops up where you give it your home Wi-Fi password.

![Wi-Fi setup: phone, frame and server](/work/tinyframe/wifi-handshake.svg)

The frame then registers with the server and shows a QR code and a six-character pairing code. You (and your friends and family) can use either one to upload pictures. Once pictures are uploaded, Vercel Python functions call the Replicate API to turn each photo into a short video, dither it to black and white, and save it to a database. Each clip is just 24 frames, each a 400 x 300 grid of 0s and 1s, played at 8fps.

After each round of playback, the frame downloads new clips and saves them to its microSD card.

![From photo to clip: packer, database, microSD, frame](/work/tinyframe/clip-pipeline.svg)

##### The case
Designing and printing the case took some trial and error, but Claude made it feel magical. It's two printed pieces in wood-colored filament, with magnets in the back to hold it on the fridge.

> Interactive 3D model of the printed case, which can be exploded into its parts: front frame, e-ink screen, PCB, components, and rear shell.

Before AI, building this project would've taken me months, and I probably wouldn't have even thought of it. With AI, it took a couple of weekends. What a time to be alive!

### DBASSISTANT

** *An Open-Source Text-to-SQL Library for Analyzing and Visualizing Data in Large Databases.* **

##### Why use DBAssistant instead of other tools?
- **Speed Through Adaptive Learning**: In larger databases, agents often require multiple attempts to identify correct schemata and tables. DBAssistant accelerates future requests by **learning from prior interactions**. With user feedback, it refines its understanding of schemas and tables, reducing redundant steps and delivering faster results over time.
- **Accuracy via Focused Architecture**: Unlike most tools that rely on complex multi-agent orchestration, DBAssistant has a **streamlined single-agent design**. By mechanistically curating the model's context window with relevant information, it minimizes errors caused by too many degrees of freedom. This approach works especially well in large, complex, or poorly documented databases.


#### How DBAssistant Works
DBAssistant combines the function-calling abilities of OpenAI's Assistants API with a code execution environment.


##### Phase 1: Initial Database Exploration
Upon connecting to a database, DBAssistant performs an automated analysis that includes:
- **Schema Summarization**: Generates concise summary files for each schema, explaining its purpose and the role of its tables.
- **Assistant Description**: Writes a one-line summary of each schema to use in the assistant's initial context during a user request.

##### Phase 2: Handling User Requests
![DBAssistant workflow diagram](/work/dbassistant/workflow.svg)
When a user submits a query, DBAssistant follows a structured, collaborative process:
1. **Schema Identification**: Identifies relevant schemas for the task and confirms selections with the user.
  - Once the user confirms, the program injects pre-generated schema summaries into the context window to guide the agent.
2. **Table Selection**: Chooses specific tables based on the enriched context and asks for user approval.
3. **Query Execution**: Generates and runs the SQL query, saving results locally (or via OpenAI's Code Interpreter) to preserve context space.
4. **Data Processing & Visualization**: Uses code execution to analyze results, creating tables, graphs, or other outputs as requested.
5. **Continuous Learning**: Before the thread is closed, the assistant is automatically prompted to tell the user what it learned about each schema. If the user approves, the new learnings are added to the pre-generated schema summaries and used in the next runs.

### CONVEXSWAP

ConvexSwap started as a hackathon project addressing a simple problem: big trades on decentralized exchange pools like Uniswap move the price against you. A pool prices every swap off its own reserves, so the larger the order, the higher the slippage. ConvexSwap streams the trade out over time instead, in smaller chunks, letting other participants arbitrage the market price back to its starting point, saving the trader a part of their slippage costs.

> Interactive figure: a constant-product pool (Uniswap v2, x · y = k, 100 ETH / 300,000 USDC, fees ignored) selling a chosen amount of ETH for USDC, once as a single swap and once in 4 chunks with arbitrage restoring the price between them. Received Δy = y · Δx / (x + Δx); slippage = 1 − p / p₀ = Δx / (x + Δx). At the default 40 ETH, the ideal fill is 120,000 USDC; one swap receives about 85,714 USDC (28.6% slippage), and 4 chunks receive about 109,091 USDC (9.1%).

The interesting part is deciding how many chunks to use. Splitting a trade to many chunks cuts slippage costs but increases gas costs and exposure to volatility. This forms a convex optimization problem. The ConvexSwap algorithm finds the number of chunks executed at a set interval that minimize trade costs. Inputs are gas cost estimates, market liquidity depth, and recent volatility.

> Figure: what the chunk count minimizes, for a trade of R split into b equal chunks against a pool with reserves y and invariant k.
> 
> - minimize: C(b) = I(b) + G(b) + V(b), over whole chunk counts from 1 to 50
> - price impact: I(b) = b · [ k / (y − R/b) − k / y ], which falls as b grows
> - gas: G(b) = ḡ · b, where ḡ is the mean cost of one swap over recent blocks
> - drift risk: V(b) = ½ · b(b − 1) · (γ_y σ_y² + γ_k σ_k²), where σ is the volatility of y and k while the trade waits and γ weights it
> - answer: b* = argmin C(b), executed as one chunk every 500 blocks

> Chart: total cost against the number of chunks (1–16) on a toy pool, in illustrative units. Price impact falls steeply as the trade is split, gas and drift risk rise, and the total bottoms out at 4 chunks.

*Illustrative numbers on a toy pool; the shape is the one the optimizer searches.*
