About

More about me.

I’m Vaughn - a backend-focused software engineer building primarily with Python and FastAPI, and intently studying more about computer science and software engineering.

Background

I started out self-taught, first through game development in Unity and C#, then moved deeper into Python. My first production role pushed me beyond just writing code: API design, ORM-backed data access, Postgres, migrations, background jobs, LLM integrations, and working inside a shared codebase with reviews, collaboration, and product constraints.

At INCENTiVISTA, I worked across the stack, but most of my strongest work was on the backend: FastAPI endpoints, database models and migrations, Celery task flows, 3rd-party API integrations, and systems around incentive matching logic and AI-assisted content generation. I also contributed on the frontend in Next.js with React and TypeScript when features needed to be built end-to-end (like a metrics dashboard).

Strengths

  • Designing and building backend features from API layer to database layer, with precise business logic.
  • Translating concepts and product ideas into clean, maintainable systems and algorithms.
  • Building background jobs, automations, and internal tools that reduce manual work.
  • Adding LLM functionality where it helps, and replacing it with deterministic code when it doesn’t.

LLMs, used pragmatically

I’ve worked with LLM-backed features in production, and I think of them as a tool which has great benefits for specific use cases, but isn't a solution for every problem.

Prompt engineering

I think it's important to invest time iteratively crafting and testing prompts to get the best results. Small changes can have a big impact on output quality and precision.

Provider + model selection

I’ve worked with multiple providers and choose based on the tradeoffs for a given task, such as output quality, speed, cost, and how easy the model is to control.

Controls + schemas

I use structured outputs, format constraints, and typed parsing for reliability and predictability throughout the system.

Pragmatic AI

I use generative AI only in systems where it's actually beneficial. If a task can be handled with deterministic code, it's more sensible to do so.

How I work

The habits I try to bring to every project.

Structure isn’t optional

I love clean codebase structure. Clear boundaries and consistent layout make projects easier to navigate, easier to change, and more easily scalable.

Strict types + clean interfaces

I prefer typed boundaries in both TypeScript and Python. Strong typing makes refactors safer and catches a lot of preventable mistakes early.

Reusable building blocks

When the same pattern starts showing up more than once, I usually want to extract it into a component, utility, or shared abstraction instead of letting duplication spread.

Docs stay current

I like docs and comments to stay useful. READMEs, docstrings, and implementation notes should help the next person understand the system without undue confusion or effort.

Stack

The tools and technologies I'm familiar with.

Backend

PythonFastAPISQLAlchemyAlembicCeleryPoetryPydanticPytest

Databases

SQLPostgresSupabase

Frontend

Next.jsReactTypeScriptTailwind CSS

LLMs

OpenAIAnthropicPerplexityLangchainPrompt designStructured outputs

DevOps

GitGitHubDockerVercelHerokuGitHub Actions

If you want to see real examples of my work, check out my projects page or GitHub.