Skip to content

Minneapolis, MN · Senior Software Engineer

Open to senior full-stack or platform roles, remote or hybrid in Minneapolis.

Hi, I’m Neil.

I build production web apps, data and media pipelines, and Terraform-managed AWS infrastructure.

Senior engineer with 5+ years turning ideas into production software, from ground-up architecture to the infrastructure it runs on. Off the keyboard you’ll find me on a climbing wall, out on a disc golf course, or behind a trombone.

Neil smiling outdoors on a leaf-covered path, holding his trombone

About

Engineer who likes owning the whole problem.

Senior Software Engineer with 5+ years of experience building production web applications and data/media pipelines, promoted from Junior Engineer to Senior Engineer through consistent technical growth. Specializes in React/Node, Python, AWS, and Terraform-managed infrastructure, with recent focus on ground-up architecture and technical leadership. Outside client work, I founded Descant LLC and built Descant, a marketplace connecting Twin Cities church music directors with freelance musicians.

  • 5+ years shipping production software
  • 3 production apps under my architecture
  • 3 engineers mentored
  • 4 roles, junior to senior, one company

Selected work

Problems I've owned end to end.

My own business and the client systems I've built: the problem, how I solved it, and what it runs on.

Founder · Descant LLC · 2026 – Present
Problem
Twin Cities church music directors hire freelance musicians for services, weddings and concerts. Descant takes a gig from posted chairs to a booked ensemble with their parts.
Architecture
  • Founded the company and built it end to end: product, design and engineering.
  • React on Supabase (database, emailed sign-in links, file storage), hosted on Cloudflare.
  • Mapbox shows gigs by distance; Resend sends bookings, alerts and reference requests.
Result
Live at joindescant.com in a free pilot across the Twin Cities, run as my own company.
Stack
  • React
  • Supabase
  • PostgreSQL
  • Mapbox
  • Resend
  • Cloudflare
  • Sentry
How a gig gets filled
  1. Director posts the gig and chairsSupabase
  2. Musicians find it on the mapMapbox
  3. Apply with profile and referencesSupabase
  4. Director books the playersResend
  5. Booked: parts, details, group threadSupabase
University of Michigan · 2021 – Present

FERPA-compliant classroom video AI

Problem
Researchers wanted AI feedback for teachers from classroom video, but the footage shows students, so it must stay FERPA-compliant from upload on.
Architecture
  • Uploads land in S3; faces are blurred first on Paperspace GPUs, cheaper than AWS GPUs.
  • Only de-identified video moves on to transcription and AI analysis on cost-sized ECS tasks.
Result
Active since my 2021 prototypes: teachers get automatic feedback while student identities stay protected.
Stack
  • Python
  • AWS S3
  • AWS ECS
  • Paperspace
Pipeline · where FERPA is enforced
  1. UploadAWS S3(footage still identifiable)
  2. Face blurPaperspace GPU(footage still identifiable)
  3. TranscriptionAWS ECS(de-identified footage only)
  4. AI analysisAWS ECS(de-identified footage only)
  5. Teacher feedbackDelivered(de-identified footage only)
MGAM

MGAM – Dominus Baseball

Problem
Fantasy baseball where owners run whole franchises and their teams play a full simulated game every day, built from players' real play-by-play.
Architecture
  • A simulation engine plays each plate appearance from the batter's or pitcher's real events, adjusted with linear weights for defense and baserunning, and seeded so any game replays exactly.
  • A nightly Step Functions pipeline imports real stats, fans each game out to its own Lambda worker through SQS, and releases scores on a schedule.
  • A serverless Express API over PostgreSQL with TimescaleDB, a React front end, and Socket.IO league chat on Fargate.
Result
Architected from the ground up: five repos and about 144,000 lines, with every environment in Terraform. One of the three production apps I own.
Stack
  • Node.js
  • React
  • PostgreSQL
  • TimescaleDB
  • AWS Lambda
  • Step Functions
  • Socket.IO
  • Terraform
Game day · lineups to box scores
  1. Lock lineups at noonEventBridge
  2. Import real play-by-playStep Functions
  3. Simulate every gameSQS · Lambda(the simulation engine, one worker per game)
  4. Release box scoresScheduled Lambda
  5. Owners follow alongReact · Socket.IO
WhiteFlag

WhiteFlag: C# sign-in, Xamarin to SuperTokens

Problem
WhiteFlag's C# mobile app and ASP.NET API needed sign-in that would last through a move from Xamarin to .NET MAUI and, in 2026, the shutdown of Rownd, their sign-in provider.
Architecture
  • Implemented the original Rownd sign-in in C#, then ported it from Xamarin to .NET MAUI.
  • When Rownd shut down, stayed on .NET 9 rather than take a beta wrapper that needed .NET 10: a Node auth server on supertokens-node, codes by text via Twilio, on ECS Fargate.
  • The API verifies SuperTokens tokens and the app gets native sign-in screens; users keep their Rownd IDs, so no data changes.
Result
I've owned WhiteFlag's sign-in from Xamarin to MAUI to SuperTokens. The final move reached production about a week after the go decision, with Claude Code doing the hands-on work under my direction.
Stack
  • C#
  • .NET MAUI
  • Xamarin
  • ASP.NET
  • Node.js
  • SuperTokens
  • Twilio
  • AWS Fargate
  • Claude Code
JHREA

JHREA agent insights

Problem
High-end real estate agents wanted buyer metrics on their listings in a social-style platform, plus something to hand clients.
Architecture
  • Bash and Python cron jobs on EC2 digest real estate data for a large React app.
  • Python and Plotly generate a downloadable one-sheet for each property.
Result
Buyer metrics for agents, with one-click property one-sheets they can share.
Stack
  • React
  • Python
  • Plotly
  • Bash
  • AWS EC2

Experience

The route so far.

Four roles at Curve10 LLC, a software consultancy building for major research universities and for private and public companies, from part-time junior engineer in 2021 to senior engineer owning architecture today, plus Descant, the business I founded on the side. Read it top-down like a topo: the crux is where I am now.

  1. Top of the route · still climbing
  2. 09/2026 – Present
    My project
    • Founded Descant LLC and built Descant, a marketplace connecting Twin Cities church music directors with freelance musicians for services, holidays, weddings and concerts.
    • Own it end to end: product, design, and engineering, from the React app and Supabase back end to Mapbox maps and Resend email. Live in a free pilot.

    Descant

    Problem, architecture, and how a gig gets filled, from post to booked ensemble.

    Read the write-up →
  3. Early 2025 – Present

    Senior Software Engineer

    Curve10 LLC

    Crux
    • Mentor 3 engineers and own technical architecture across 3 production applications.
    • Architected MGAM – Dominus Baseball from the ground up: a fantasy baseball platform simulating gameplay from real-world performance statistics for a near-real-life management experience.
    • Leveraged agentic AI coding practices to build multiple in-house features that previously required paid SaaS subscriptions, reducing third-party dependency costs.
    • Manage infrastructure-as-code using Terraform across all owned projects.
  4. 2023 – Early 2025

    Software Engineer

    Curve10 LLC

    Pumpy middle
    • Designed and shipped Progressive Web Applications and data/media pipelines for clients.
    • Operated within agile methodologies to deliver work on schedule.
    • Integrated and troubleshot SaaS tooling to resolve complex technical issues, ensuring seamless feature integration.

    JHREA

    A large-scale, social-media-style platform for high-end real estate agents, delivering buyer metrics and insights.

    Read the write-up →

    University of Michigan

    Architected a data pipeline for AI-driven analysis of classroom video, automatically generating teacher feedback while maintaining full FERPA compliance.

    Read the write-up →
  5. Late 2021 – 2023

    Junior Software Engineer (Full-Time)

    Curve10 LLC

    Warm-up jugs
    • Worked under both a front-end and a back-end/architect engineer, learning to structure full-stack applications efficiently.
    • Built foundational AWS skills later expanded into infrastructure ownership at the senior level.
  6. 06/2021 – Late 2021

    Junior Software Engineer (Part-Time)

    Curve10 LLC

    Start hold
    • Built early prototypes for the University of Michigan project, which remains an active client engagement today.

Skills

The rack.

The gear I clip into every day, plus the practices that keep projects moving.

  • Progressive Web Apps
  • Data & media pipelines
  • Infrastructure as code
  • Agentic AI coding
  • Agile delivery
  • FERPA-compliant data handling
  • Mentoring
  • SaaS integration & troubleshooting

Off the keyboard

Climbing, disc golf, and trombone.

The hobbies that keep me curious. Each one comes with a small toy I built from scratch, so they double as front-end work samples, with source on GitHub.

Rock climbing

Reading the route.

Climbing is the same loop as debugging. Read the problem, try something, fall off, adjust, and go again.

Neil bouldering up the face of a huge granite boulder beside a river in a forested canyon, friends spotting below
Poudre Canyon - Fort Collins, CO
A roped climber high on a tall sandstone spire with snowy peaks and blue sky behind
Estes Park - Rocky Mountain National Park, CO
Neil hanging from the underside of a large overhanging pink granite boulder above a wide forested valley
Vedauwoo - Buford, WY

Try it · Climb the gym boulder

Drag to look around · click a glowing hold

Your beta

On the start jug. Grab a glowing hold your climber can reach.

Moves
0
Grade
—

The glowing holds are in reach. Bigger, fewer moves earn a harder grade — four moves sends it at V8.

  • jug
  • crimp
  • sloper
  • pinch

How I built this

three.js scene with toon shading and a climber posed by two-bone inverse kinematics; the IK and route logic are pure TypeScript with Vitest tests. Source: world.ts, limb-ik.ts (opens GitHub in a new tab)

Disc golf

Chasing chains.

Disc golf is a physics problem you solve with your arm: power, release angle, and how the disc fades at the end of its flight. The straight line is blocked by trees, so shape a hyzer or anhyzer around them and play it out until you hit the chains.

Try it · Throw for the basket

tee
60%
Flat release
HyzerAnhyzer

Right-hand backhand. Line it up and let it rip.

Hole 1 · Par 3 · Stroke 0

How I built this

Bézier flight model for hyzer and anhyzer fade, tree collisions, and scoring, drawn as animated SVG and unit-tested. Source: disc-golf.tsx, disc-flight.ts (opens GitHub in a new tab)

Classically trained trombonist

Seven positions, infinite glissando.

Classical training taught me patience, listening, and that fundamentals practiced daily compound. The trombone has no keys, just a slide, so every note is something you find by ear.

Black and white photo of Neil performing on trombone on stage, wearing a bow tie, eyes closed
On stage

Try it · Play the slide

Press and drag anywhere on the horn to play. Slide right to lower the pitch.

F3
Position
1.0
Frequency
174.8 Hz

How I built this

Web Audio synth (detuned oscillators through a low-pass filter) driven by real slide-position pitch math, playable by pointer or keyboard. Source: use-trombone-synth.ts, trombone.ts (opens GitHub in a new tab)

Contact

Let’s build something worth sending.

Open to senior full-stack or platform roles, remote or hybrid in Minneapolis. Whether it’s a role, an architecture problem, or a recommendation for the local crag or course, my inbox is open.

Based in Minneapolis, MN