FOR THE NEX TEAM · FRONTEND ENGINEER, MARKETING & DIGITAL EXPERIENCE

A productI’m behind.Skills you canget behind.

I build marketing sites and the systems behind them. Frontend, CMS tooling, integrations, analytics and the guardrails that keep changes safe.

Usually because someone said, “There has to be an easier way.”

See how I fit the role

Why Nex

We already have one
in our living room.

I have two boys, and our family owns and regularly uses Nex Playground.

So when I saw an engineering opening at Nex, I paid attention.

From machines
to software.

I've spent nine years troubleshooting production equipment, where a bad diagnosis means more downtime and another trip back to the same machine.

In 2023, I started studying software development at Southwest Applied Technology College, focused on Java. I spent about a year and a half in the program.

Then I started building.

That became PL Pages in 2024.

Today I build production marketing sites and business systems for small companies, usually as the only engineer involved. That means I end up owning a lot of the path: frontend, content structure, APIs, deployment, analytics, CMS tooling and the production problems that show up afterward.

The tools changed.

The way I work didn't.

Find the real problem. Understand why it happened. Build the fix. Test it under real conditions. Leave the system better than you found it.

Why now

I wasn't looking
for an exit.

I checked out the role because my family already knew Nex. I kept reading because the work sounded like the direction I've been moving toward on my own.

I've spent the last few years learning software and building sites, tools and systems outside my full-time job.

I'm not trying to get away from what I do now. I'm trying to get closer to what I want to get really good at.

Getting to do that full time, for a product my family already uses, makes this one different.

The job, line by line

What you asked for.
Where to see it.

Every line below comes from the Nex posting. Where I’m not there yet, I say so.

  • Built and maintained a production marketing site real teams depend on Client sites for local businesses, which I run and update myself, like bravelizard.com and kalamasilvas.com.
    Kalama Silvas →
  • Set up or evolved a CMS for a non-technical team A plain-English CMS a range owner uses instead of WordPress admin, then redeployed for a second client in half the time.
    Try the CMS →
  • Writes tests and cares about edge cases A 40-test Vitest suite on a call-dispatch service, a production validator on every CMS write, and build checks that fail on bad copy.
    See the tests →
  • Diagnosed and fixed real performance bottlenecks (LCP) My SEO pipeline collects Core Web Vitals, and this site lazy-loads its product fonts. A documented before and after on a client site is next.
    In progress
  • Takes it end to end, from scoping to smoke testing in production I’m usually the only engineer, so every project here went from the owner’s ask to a verified deploy.
    The work →
  • Works closely with marketers, designers and stakeholders Business owners are my stakeholders. Turning “can it just do this?” into something they can run is the whole job.
    Chat CMS →
  • Uses AI tools like Claude Code, and knows when to push back Daily. I check what it writes against the real code and data. Several claims on this site were corrected that way.
    How I work →
  • TypeScript and a modern framework (SvelteKit, bonus for Svelte) This site is SvelteKit and Svelte 5. Ops Tasks is Next.js and React. Most of my Workers are strict TypeScript.
    This site →
  • Bonus: Sanity CMS Learning it now. The project data on this site is already modeled as typed documents, ready to move into a Studio.
    In progress
  • Bonus: Figma and design feedback I work from designs and give feedback on them, but Figma isn’t my daily tool yet.
    In progress
  • Bonus: documentation others actually want to read I wrote a step-by-step build playbook for the CMS, which is how the second deployment went twice as fast.
    The redeploy →
  • Bonus: localization, GDPR and cookie consent Not something I’ve shipped yet.
    Not yet

Here’s whatI’ve built.

Client websites, a simpler way to edit them, and tools I built when the existing ones didn’t fit. Each project has a story behind it.

01
Brave Lizard Tactical

Chat CMS

Learn more

I built this so a range owner could change his website by asking, instead of digging through WordPress. He can update content, see what changed, and keep track of recurring jobs in one place.

What made it possible

The model is never the security boundary. Every write goes through a server-side validator (scoped CSS only, no scripts or iframes, embed allowlist), deletes can only go to trash and need an explicit confirmation, and the endpoint list is structural, so pages, posts and media are the only things it can reach. The host's bot wall then blocked the Worker's rotating IPs. I proved it with a matched test (same request, only the source IP differed), routed traffic through a small static-IP proxy, and got that IP allowlisted.

Built with

  • Cloudflare Workers
  • Anthropic tool use
  • WordPress REST
  • Cloudflare Access
  • Airtable

One message. One change.

🦎 Brave Lizard CMS[email protected]
Change Saturday hours to 8am to 4pm
What do you want to change on the site?SEND
bravelizard.com
BERYL, UTAH · PRIVATE RANGEBRAVE LIZARD TACTICAL
RANGE HOURS Thu to Fri 12pm to sunset Saturday 9am to 5pm
02
ClearPoint Aero

Chat CMS, redeployed

Learn more

A second client, a counter-drone company, wanted the same plain-English CMS. I copied the Brave Lizard build, rebranded it, pointed it at their WordPress theme and rewrote the assistant for their business. Kickoff to a deployed CMS took about two days, half the time of the original. I also rebuilt their seven-page site, where the navigation, mobile menu and process explorer run on CSS alone because the CMS strips every script.

What made it possible

Reusing code without sharing anything else. The auth, routing and validator carried over almost untouched, but every piece of infrastructure is new: its own Airtable base with a token scoped to it, a capped Anthropic key, a static-IP proxy for the host firewall and Google SSO for two people. I caught the Airtable token over-scoped during setup, and the other bases now return 403.

Built with

  • Cloudflare Workers
  • Anthropic tool use
  • WordPress REST (Avada)
  • Railway proxy
  • Cloudflare Access
  • Airtable

ClearPoint’s CMS sits behind their SSO. The demo runs the same code.

Built once. Deployed twice.

🦎 Brave Lizard CMS [email protected]
cp -r brave-lizard/chat-cms → clearpoint-aero/chat-cms
✓auth.jsidentities
✓index.jsroutes
✓validate.js#blt-v1 → #cpa-v1
✓wp.jsAvada theme
✓ui.jsbrand
✓chat.jsC-UAS prompt

The Brave Lizard CMS gets copied into a new project for ClearPoint Aero.

03
SEO Ops

Multi-agent SEO pipeline

Learn more

I wanted one place to see what needed attention across client sites. This collects search and performance data, checks the findings, and drafts changes for a person to review before anything gets published.

What made it possible

Keeping it honest. Each action item has to link back to a finding, and the Verifier stage writes a pass or flag verdict with grounding notes before anything reaches the approve queue.

Built with

  • TypeScript
  • Cloudflare Workers
  • Cloudflare Pages
  • Airtable
  • DataForSEO
  • PageSpeed API
  • GSC

Internal tool behind SSO. The demo uses made-up data.

Find it. Check it. Ship it.

PL Pages plpages.com · Web, SEO & business systems · Southern Utah
LIVESAMPLE DATA
KEYWORDS48 PAGES22 AWAITING0 PUBLISHED0
Collect Analyze Plan Verify Doer
RUN-0927-A · pulling DataForSEO rankings, PageSpeed (LCP, INP, CLS), Search Console…

An audit pulls rankings, Core Web Vitals and Search Console data.

04
Personal tool

Ops Tasks PWA

Learn more

I built a small task app for turning a rough idea into a list I can work through. It uses Next.js and React, and installs on a phone like an app.

What made it possible

Model output is never trusted as state. Replies end in fenced JSON blocks that the client parses, checks field by field against enums and then applies. The API key stays server side behind an edge route, and I got next-on-pages running on Cloudflare after pinning around a version mismatch.

Built with

  • Next.js 14
  • React 18
  • Edge runtime
  • PWA / service worker
  • Cloudflare Pages

Personal app, no public login. Walkthrough on request.

Rough idea in. Real tasks out.

OPS // TASKS1 active
Gym, 5:30amdaily
launch groll-offs site tue, call client tmrw re water truck
› dump an idea…

I type a messy note on my phone.

Personal app, no public login. Walkthrough on request.
05
Kalama Silvas

Editorial site for a design firm

Learn more

A quiet, editorial site for a hospitality interior design and procurement firm. It has a full-bleed hero that cross-fades between hotel projects, a full-screen serif menu, words and numbers that reveal as you scroll, a client logo marquee and a portfolio that reflows down to a phone.

What made it possible

Making motion feel calm. Every reveal runs off an IntersectionObserver, the counters animate once, and the whole thing respects reduced motion. I moved it from Wix to Cloudflare Pages with 301s for every old URL, then found a duplicate preview domain indexed in Search Console and cleaned it up. Next up is performance: the hero serves 3200px photos with no srcset or lazy loading yet.

Built with

  • HTML
  • CSS animation
  • IntersectionObserver
  • Cloudflare Pages
  • Search Console

Quiet design. Careful motion.

kalamasilvas MENU
PROCUREMENT · INTERIOR DESIGN
Memorableby design.

Twenty years inside the world’s hotels, from boutique to über luxury, coast to coast.

THE WORK
01 · The Fairmount · San Antonio, TX02 · Hyatt Place Uptown · Charlotte, NC03 · Warhorse Casino · Lincoln, NE

Hotel projects cross-fade behind the headline with a slow zoom, and the lines slide up in order.

06
SEO Ops

Secrets vault + MCP server

Learn more

I needed a way for my AI tools to use credentials without copying them into conversations. I built an encrypted vault with separate access for contractors.

What made it possible

Access is scoped by the password you use at the OAuth consent step. A contractor’s scope only sees secrets tagged for them (default deny, even for direct ID lookups). A new tier is one Worker secret, not a code change, and repeated bad passwords trigger an IP lockout.

Built with

  • Workers
  • KV
  • OAuth 2.1 / DCR
  • MCP
  • WebCrypto

Private infrastructure. Code walkthrough on request.

Just the keys it needs.

AI TOOL Claude
tools/call list_secrets
KV · AES-GCM
BrightLocal API keyva
DataForSEO loginva
Cloudflare API / biguntagged
WP app password (C&C)va
Anthropic API keyuntagged

An AI tool asks to connect. The consent password decides the scope.

Private infrastructure. Code walkthrough on request.
07
Midnight Services

Shared SMS + call inbox

Learn more

I built a shared inbox for a hauling company so calls and texts live together. The team can see who is handling a customer, and incoming calls try each person before going to a voice screener.

What made it possible

It exists to enforce one rule: never contact a lead twice. Whoever answers a call claims the thread without stealing an existing owner, and a banner shows who spoke to the customer and how long ago.

Built with

  • Workers
  • D1
  • Twilio
  • Web Push
  • ElevenLabs

Client tool behind a login. Walkthrough on request.

Never call a lead twice.

(435) 555-0142 Unassigned
☎ Incoming call
Jess 10s
Dana 10s
Rico 10s
Voice screenerif nobody answers

A customer calls the business line.

Client tool behind a login. Walkthrough on request.
08
The Learner

Crew agent console

Learn more

This is where I manage the AI agents I use for work. I can message them, bring them into a group conversation, or give them a scheduled job.

What made it possible

Long jobs survive failures. Each step checkpoints to D1, stale leases get requeued, and the cron pass repairs jobs that a database hiccup dropped. It has zero npm dependencies.

Built with

  • Workers
  • D1
  • Cron Triggers
  • Anthropic API

Long jobs survive.

🚀 @Scout research mudjacking demand in St. Joseph, MO
09
PL Pages

plp-outbound

Learn more

I built the service that decides when an outbound call can happen. It checks calling hours, attempt limits and how many calls are already running, then keeps Airtable up to date.

What made it possible

The post-call webhook is HMAC-signed. Stale timestamps are rejected as replays and redeliveries are processed once. A 40-test Vitest suite covers signatures, dispatch gating, do-not-call suppression and CRM updates.

Built with

  • JavaScript
  • Workers
  • D1
  • ElevenLabs
  • Vitest

Backend service with no public UI. Code walkthrough on request.

Check first. Then call.

plp-outbound · wrangler tail
POST /webhooks/elevenlabs ElevenLabs-Signature: t=1790431201,v0=9f2c…
✓ HMAC-SHA256 matches · timestamp fresh
✓ post-call result saved · CRM updated in Airtable
▍

The post-call webhook is checked with an HMAC signature.

Backend service with no public UI. Code walkthrough on request.
10
Portfolio

This site

Learn more

I built this portfolio in SvelteKit for the Nex application. I liked the movement and color on their site, and wanted to try that approach with my own work. The resume has its own print layout.

What made it possible

The design takes cues from nexplayground.com, rebuilt from scratch on open-source fonts.

Built with

  • SvelteKit
  • Svelte 5 runes
  • TypeScript
  • Cloudflare Pages

Content in. Checks on.

projects.ts
export const projects: Project[] = [
  {
    slug: 'chat-cms',
    title: 'Chat CMS',
    tone: 'green',
    summary: 'A range owner types what he wants. ',
    demo: { href: '/demos/chat-cms/' },
  },
$ npm run build
waiting…
localhost
I BUILD SITES PEOPLE CAN ACTUALLY RUN. ➜See the work

Projects live as typed data, not hard-coded markup.

Scope

01Start with what someone needs

Build

02Make something they can try

Ship

03Put it live and check it works

Measure

04See where people get stuck

Fix

05Keep making it better

What I’ve learned
along the way

  1. 1. Make changes safe

    A business owner should be able to update a page without worrying about breaking the site. In the CMS, I validate changes on the server, ask before deleting, and keep an activity log.

  2. 2. Find out what happened

    I like the troubleshooting part. A broken layout, a blocked request, a page Google indexed twice: I want to understand the cause before changing things.

  3. 3. Leave a useful check behind

    When I keep running into the same mistake, I look for a way to catch it automatically. That has led to build checks, validators and a Vitest suite for my call-dispatch tool.

  4. 4. Use AI. Ask questions.

    Claude Code is part of how I build. I still have to understand the result, test it and deal with it when something goes wrong.

Brayden with his partner and two young sons
Away from the keyboard

And then there
are these two.

These are the two behind the Nex connection. It would mean a lot to help build the web experience for a product we already enjoy together.

Read the resume