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

A productmy family uses.The work Iwant to do.

I build marketing sites, CMS tools, integrations, analytics, and the guardrails that keep real teams from breaking things when they move fast.

Most of my projects start with the same sentence: “There has to be an easier way.”

See how I fit the role

WHY NEX?

We already have one
in our living room.

My family owns and regularly uses Nex Playground. My two boys know the product before they know the company behind it.

So when I saw a frontend engineering role focused on marketing and digital experience, it felt different.

This is not just a company I found on a job board. It is a product already part of our home.

From machines
to software.

I have spent nine years troubleshooting production equipment. In that world, a bad diagnosis means more downtime, another trip back, and a problem that still is not solved.

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 own a lot of the path: frontend, content structure, APIs, deployment, analytics, CMS tooling, and the production problems that show up after launch.

The tools changed.

The way I work did not.

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 am not 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 have been moving toward on my own.

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

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

Doing that full time, for a product my family already uses, makes this role stand out.

The job, line by line

What you asked for.
Where to see it.

Every line below comes from the Nex posting. Where I have direct proof, I show it. Where I am still growing, I say so.

  • Built and maintained a production marketing site real teams depend on I build and maintain client sites for local businesses, including bravelizard.com and kalamasilvas.com.
    Kalama Silvas →
  • Set up or evolved a CMS for a non-technical team I built a plain-English CMS a range owner uses instead of WordPress admin, then redeployed the same pattern for a second client in about half the time.
    Try the CMS →
  • Writes tests and cares about edge cases I wrote a 40-test Vitest suite for a call-dispatch service, added production validation to every CMS write, and use build checks that fail on unsafe copy.
    See the tests →
  • Diagnosed and fixed real performance bottlenecks My SEO pipeline collects Core Web Vitals, and this site lazy-loads product fonts. A documented before-and-after client performance fix is next.
    In progress
  • Takes work end to end, from scoping to production smoke testing I am usually the only engineer on my projects, so I take the work from the owner’s ask to a verified deploy.
    The work →
  • Works closely with marketers, designers, and stakeholders My stakeholders are business owners. Turning “Can it just do this?” into something they can run is the work.
    Chat CMS →
  • Uses AI tools like Claude Code and knows when to push back I use AI tools daily, but I check the output against the real code, data, and constraints. Several claims on this site were corrected that way.
    How I work →
  • TypeScript and a modern framework, with Svelte as a bonus This site is built with SvelteKit and Svelte 5. Ops Tasks is built with Next.js and React. Most of my Workers are strict TypeScript.
    This site →
  • Bonus: Sanity CMS I am 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 use Figma through Claude Code API to inspect designs, understand layout systems, and translate design feedback into shipped implementation changes.
    In progress
  • Bonus: documentation others actually use I wrote a step-by-step CMS build playbook, which helped the second deployment move about twice as fast.
    The redeploy →
  • Bonus: localization, GDPR, and cookie consent I have not shipped multilingual sites or a full cookie consent flow yet, but I understand the basics: region-aware content, privacy-safe tracking, consent before non-essential cookies, and clear handling of user data.
    Not yet

Here is whatI have built.

Client websites, safer CMS tools, SEO systems, call workflows, and internal tools I built when the existing options did not fit.

01
Brave Lizard Tactical

Plain-English CMS

Learn more

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

How it held up

The model is never the security boundary. Every write goes through a server-side validator: scoped CSS only, no scripts or iframes, and a strict embed allowlist. Deletes go to trash and require explicit confirmation. The endpoint list is structural, so the assistant can only reach pages, posts, and media.

When the host’s bot wall blocked the Worker’s rotating IPs, I proved the issue with a matched test where only the source IP changed. Then I 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 9am to 5pm
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 10am to 4pm
02
ClearPoint Aero

CMS redeploy

Learn more

A second client, a counter-drone company, wanted the same plain-English CMS. I reused the Brave Lizard pattern, rebranded it, pointed it at their WordPress theme, and rewrote the assistant for their business. Kickoff to deployed CMS took about two days, roughly half the time of the original.

I also rebuilt their seven-page site. The navigation, mobile menu, and process explorer run on CSS alone because the CMS strips every script.

How it held up

The code was reusable. The infrastructure was not shared. ClearPoint has its own Airtable base, scoped token, capped Anthropic key, static-IP proxy, and Google SSO for two users.

During setup, I caught an over-scoped Airtable token and fixed it. Other bases now return 403.

Built with

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

ClearPoint’s CMS sits behind 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 pattern gets copied into a new project for ClearPoint Aero.

03
SEO workflow

Multi-agent SEO pipeline

Learn more

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

How it held up

Every action item has to link back to a finding. A verifier writes a pass or flag verdict with grounding notes before anything reaches the approval queue.

Built with

  • TypeScript
  • Cloudflare Workers
  • Cloudflare Pages
  • Airtable
  • DataForSEO
  • PageSpeed API
  • Google Search Console

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.

How it held up

Model output is never trusted as state. Replies end in fenced JSON blocks. The client parses the JSON, checks every field against allowed values, and only then applies the changes.

The API key stays server side behind an edge route. I also 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

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.

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, hotel project cross-fades, a full-screen serif menu, scroll reveals, animated numbers, a client logo marquee, and a portfolio that reflows down to a phone.

How it held up

The motion needed to feel calm. Reveals run off an IntersectionObserver. Counters animate once. The site respects reduced motion.

I moved it from Wix to Cloudflare Pages with 301s for every old URL. Then I found a duplicate preview domain indexed in Search Console and cleaned it up.

Next up is performance. The hero still serves large photos without srcset or lazy loading.

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
06
Credential access

Secrets vault and MCP server

Learn more

I needed a way for AI tools to use credentials without copying secrets into conversations. I built an encrypted vault with scoped contractor access.

How it held up

Access is scoped by the password used at OAuth consent. A contractor scope only sees secrets tagged for that scope. Untagged secrets are denied by default, even for direct ID lookups.

A new access tier is one Worker secret, not a code change. Repeated bad passwords trigger an IP lockout.

Built with

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

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.

07
Midnight Services

Shared SMS and 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 each customer, and incoming calls try each person before going to a voice screener.

How it held up

The system exists to enforce one rule: never contact a lead twice. Whoever answers a call claims the thread without stealing an existing owner. Anyone else who opens it sees who spoke to the customer and how long ago.

Built with

  • Cloudflare Workers
  • D1
  • Twilio
  • Web Push
  • ElevenLabs

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.

08
Agent operations

Crew 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.

How it held up

Long jobs survive failures. Each step checkpoints to D1. Stale leases get requeued. A cron pass repairs jobs dropped by a database hiccup.

It has zero npm dependencies.

Built with

  • Cloudflare Workers
  • D1
  • Cron Triggers
  • Anthropic API

Long jobs survive.

🚀 @Scout research mudjacking demand in St. Joseph, MO
09
Call operations

Outbound call gate

Learn more

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

How it held up

The post-call webhook is HMAC-signed. Stale timestamps are rejected as replays. Redeliveries are processed once.

A 40-test Vitest suite covers signatures, dispatch gating, do-not-call suppression, and CRM updates.

Built with

  • JavaScript
  • Cloudflare Workers
  • D1
  • ElevenLabs
  • Vitest

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.

10
Portfolio

This site

Learn more

I built this portfolio in SvelteKit for the Nex application. I liked the movement and color on nexplayground.com and wanted to try that kind of energy with my own work. The resume also has its own print layout.

How it held up

Projects live as typed data, not hard-coded markup. The build checks for unsafe copy, type-checks the data, prerenders the site to static HTML, and deploys to Cloudflare Pages.

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 have 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, but stay responsible for the work.

    Claude Code is part of how I build. I still have to understand the output, test it, and handle the parts that go wrong.

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

These are
the three.

My wife and our two boys. The three 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