Sen CutlerData Engineer

Services

The types of work I do, with examples.

AI/ML Training Data Curation

It's a truism in AI/ML work that 70%-90% of the work in preparing to run an ML or AI model is just preparing the data. I do that 70%-90%.

One project I did called for taking 13 ebooks available only as old PDFs with OCR'd text of uneven quality. I extracted and cleaned it, building a 1.1M-token corpus. I enriched it by using the OpenAI API to generate topical question-and-answer pairs for each chunk.

In another case I was working with 117 PDFs where I had to use both the text layer and fresh OCR to capture the tabular data. I worked with an LLM, page by page, to capture each record to markdown, then in second and third passes loaded it into a PostgreSQL database in converted form. The deliverable was a CLI search/lookup/render tool.

Semantic Analysis Using ML

I'm certified in ML and AI, and I know how to apply those skills to textual and semantic tasks. I build semantic tools to surface insights or test hypotheses.

I've built a semantic search and ranking engine using transformer embeddings. It scores documents, using several matching strategies, and excludes matches against negative examples. Another tool I built combines embedding similarity with BM25 relevance scoring over a term cloud. This surfaces more distinctive passages than plain cosine similarity when every document uses similar language.

Data Migration

I build tools to move a business's records from one system to another without losing data or creating duplicates.

For one client, I migrated an entire CRM using nothing but the two vendors' APIs, staging with PostgreSQL. Another client was a small college that needed a tool to synchronize between a legacy platform and its replacement, so both systems could run in parallel during the changeover.

The most prominent project I've done is an async Python toolkit built against the Lawmatics API for a legal-tech client. Their business model requires a migration whenever they onboard a customer, so I built a reusable toolkit; I've conducted nine migrations with it to date. That client wrote me a letter of recommendation.

Data Extraction, Cleaning and Processing

I build tools to pull data out of data files in any format I can read, or from an API, and collate it. I'll clean the data using a combination of manual and automatic techniques. I can clean the data as a one-time task, or build a program that automatically cleans the data every time it runs.

Then I process the data to build something new from it, whether I'm just culling it down to the very specific records you need, or building the records you need from what I have. Again, I can do this myself once or build a program to do it automatically. The output can be a data file in any format I can write, or I can push it to an API.

For one job, I matched records across names, companies, and locations in a 10.8M-row PostgreSQL database. For another, I de-duplicated 320,000 contact records from nine inconsistent CSV files and standardized the result. I've transformed raw datasets into structured catalog files, cleaned live Google Sheets, and combined fragmented public data into usable datasets.

API Integration

I build tools to pull data from APIs and/or push it to APIs, in service of creating a reliable information system that just works. I'll read the documentation, do the hard work of establishing how the API actually behaves— handling pagination, rate limits, authentication, parallelized upload/download, & anything else it throws at me.

I've written clients for the Gmail API, the Populi & Atrium APIs, and the Google Sheets API among many others

ETL Pipelines

I build tooling to move data on a schedule from point A to point B with minimal supervision. It might be a single synchronization script, or a staged pipeline hosted in a Docker container in the cloud. I can give it discrete, reproducible steps with a FastAPI control plane to give you visibility into every step of the process.

One platform I built pulls records repeatedly from external APIs into a PostgreSQL database through a shared framework. Another marketing analytics pipeline I built follows the same model from the command line, writing intermediate artifacts in Parquet or JSON. Both are containerized and covered by integration tests.