Work

What I have built and what it did.

Five projects: one is my job, four are things I made because I wanted them to exist. Numbers are the ones I can defend in an interview.

2023–Senior Website Manager
Web strategyWordPressUX researchGA4SEO / AI search

+73% users YoY

Global Fishing Watch

I own web strategy and roadmap for the WordPress-based flagship site, which has reached 1.35 million users and close to 2 million sessions over the last three years. That means setting vision and prioritization across content and design so each surface argues against a real audience and a real growth goal, not against whoever asked loudest.

  • Grew active users 73% year over year, from 317,739 in 2024 to 550,236 in 2025, while holding an engagement rate above 71%.
  • Direct the external delivery bench against the roadmap: an ad placement agency and contractor, a contract web developer, and a digital asset management manager, including the scopes of work and budgets behind them.
  • Usability testing, heat maps, and surveys retired the site’s oldest navigation assumption. Over 90% of users never see the homepage at all, arriving directly on editorial articles, and over 60% of the ones who do land on the homepage are only trying to reach the interactive map. The navigation and information architecture were reorganized on those findings, and new page templates are in development so that every article works as a front door instead of a waypoint.
  • Built organic search into the site’s single largest traffic source: more than 447,000 active users from organic over three years, peaking at 232,364 organic sessions in 2025.
  • Drove 1.83 million key events, including 14,813 sign-ups and 275,690 clicks into the interactive map, the feature most visitors come for.
  • Extended the search practice into AI answer engines, treating ChatGPT, Claude, Gemini, and Perplexity as a distribution channel with its own requirements: structured data, clear entity definitions, and pages written to be cited rather than just ranked.
  • Led a multilingual redesign and localization program across international markets, cutting page load times 35% and improving engagement metrics 25%.
  • Achieved WCAG 2.2 compliance by embedding accessibility and performance standards into the design and development process rather than auditing after the fact.
globalfishingwatch.org
2025–Solo: build, content, SEO
Next.js 16MDXAI visibilitySharp

8 regional guides

Trailside Birding

A side project that is also a working lab for the things I argue for at work: static delivery, responsive images generated at build time, structured content, and search strategy that now has to account for AI answers as well as blue links.

  • Eight regional guides from the Michigan Lower Peninsula to the Arizona Sky Islands, each pairing trail data with the species you can reasonably expect to see.
  • Ran a full AI visibility audit: prompt testing across ChatGPT, Claude, Gemini, and Perplexity, competitive AI-presence scoring against Cornell Lab and Audubon, and gap analysis that identified the unclaimed "AllTrails plus eBird" prompt space the content roadmap now targets.
  • Next.js static export with MDX content, a Sharp image pipeline producing WebP and JPEG at 400w / 800w / 1200w, and a build-time Fuse.js search index.
  • Every image is CC BY, CC BY-SA, or public domain. Species links go to Cornell’s All About Birds.
trailsidebirding.com
2026Solo developer
SwiftSwiftUIActivityKitWidgetKit

Live

Drive AQI Monitor

The first app to put the US EPA Air Quality Index on the CarPlay Dashboard. No accounts, no ads, no tracking. Location is used to fetch air quality and nothing else.

  • Live EPA AQI for your current location, color coded from Good to Hazardous, updating automatically as you drive.
  • CarPlay Dashboard card via Live Activities, plus Lock Screen, Dynamic Island, and Apple Watch Smart Stack surfaces.
  • PM2.5, PM10, and ozone detail for people who want the underlying numbers.
  • Private by design: no account system, no analytics SDK, no advertising identifiers.
driveaqi.com
2026Solo developer
SwiftSwiftUIPhotoKitCoreLocation

Live on the App Store

Just Frame

Your photo library, one image at a time, full screen, with the date and the place displayed at the bottom in large type. It reads the GPS data already in your photos and reverse-geocodes it, so a picture from 2014 tells you it was Leland without you having to remember.

  • Shuffles with no repeats until every photo has been shown, then reshuffles, so an all-day run never loops early.
  • Reverse-geocodes each photo’s GPS coordinates to a place name, with a local cache so a burst from one location does not hammer the geocoder.
  • Pick any album as the source, including smart albums like Favorites, or run the whole library.
  • Set the hours it should run. Outside them the screen goes dark and the device is free to sleep.
  • Keeps the screen awake while running and handles Limited Photo Access gracefully instead of demanding full library permission.
  • Loads iCloud-only photos on demand rather than skipping them, and omits whichever overlay line is missing when a photo has no date or location.
  • From-scratch SwiftUI, no third-party dependencies. Shipped to the App Store at $1.99 with no subscription, no in-app purchases, and no analytics SDK.
davepoortvliet.com/just-frame
2022–Co-founder
PHPJavaScriptAWS

TinyAttack.com shipped

Luck Dragon Games

Co-founded a gaming startup where I own web strategy, product, marketing, and analytics. The interesting part is not the game, it is running a full acquisition and retention loop with no budget and no team.

  • Owned web strategy, product, marketing, and analytics for the debut title, TinyAttack.com.
  • Created all of the game’s graphics and art assets.
  • Grew and retained a player community through iterative, data-informed experiments across Discord and web channels.
tinyattack.com