Tech Lead — Hospitality Commerce Platform & AI-First Development

Please login or register as jobseeker to apply for this job.

TYPE OF WORK

Any

SALARY

$2500 per month

HOURS PER WEEK

40

DATE UPDATED

Jul 23, 2026

JOB OVERVIEW

Tech Lead — Hospitality Commerce Platform & AI-First Development
**Danner Enterprises / Save on Branson · Branson, MO (hybrid or remote considered) · Full-time**

---

The Short Version

We run a hospitality and vacation portfolio in Branson, Missouri — show tickets, lodging, tours, vacation rentals — with **$20M+/year flowing through a custom platform we call SMASH**: 248 daily users, 978,000 customer records, 371,000 orders, and a decade of real business logic.

The developer who built most of it over the last 4.5 years is transitioning out. We're not replacing her with a bigger team — we're moving to an **AI-first development model**: AI coding agents generate most of the code; one exceptional human tech lead reviews it, deploys it, owns the architecture, and makes the calls.

That human is you.

This is a rare kind of role: total technical ownership of a revenue-critical system, a mandate to modernize it, and a front-row seat (driver's seat, actually) in how AI-assisted development actually works at a real company — not a demo, not a lab.

---

What You'll Own

**A legacy system that pays the bills.** ASP.NET Zero / ABP Framework ---------- 8 (we just completed the 3.1 ? 8 migration), Angular 8 front end, EF Core + Dapper, SQL Server (237 tables, 903 migrations), Hangfire, Redis, SignalR, GraphQL. It handles contacts, orders, tickets, lodging, tours, vouchers, and commissions for 11 business entities. It works. Your job is to keep it working while making it better.

**A modern system that's replacing it, piece by piece.** A .NET 10 Clean Architecture build (`SOB.*`): stored-procedure-first data access (Insight.Database), DbUp migrations, a Vite/JavaScript campaign UI, a REST API replacing the legacy RPC surface, and an SMS campaign engine (ClickSend, GoTo Connect, consent/opt-out management, Hangfire send engine). Both systems share one database — schema changes are a coordination discipline, and you'll own it.

**A production MCP server.** `SOB.Mcp` — built on the official C# Model Context Protocol SDK — already gives AI agents structured, auth-forwarded access to platform data. You'll extend it: more tools, more capabilities, more of the business safely exposed to agents.

**The AI development pipeline itself.** AI agents submit PRs against the repo daily. You review them, harden them, merge them, and deploy them. You maintain the CLAUDE.md / AGENTS.md context documentation that keeps agent output quality high. Target state: 80–120 commits/month shipping through your review, with you as the quality gate — not the bottleneck.

**The integration estate.** Stripe, ActiveCampaign, GoTo Connect, Five9, Twilio, RingCentral, ClickSend, Contentful, Zapier, outbound webhooks to automation platforms. Phones and payments are this business — the integrations are not side quests.

---

Your First 90 Days (Real Backlog, Not Boilerplate)

We believe in showing you the actual work. If this list makes you lean in, apply. If it makes you wince, we've saved us both time.

- Fix an ActiveCampaign sync integration that's logging millions of error rows at a 99.9?ilure rate — while the business thinks it's fine
- Triage 215 failed Hangfire jobs and stand up failure alerting
- Stand up CI/CD on Azure DevOps (PR ? build ? staging auto-deploy) to replace manual, single-person deployments
- Design and run a backfill inferring order status for 308,000 orders where it's NULL (83% of all orders)
- Reconcile a six-figure gap between recorded transactions and orders
- Close a 378,000-ticket gap in our voucher/billing pipeline
- Groom a 178-item backlog, kill the zombies, and set priorities with leadership
- Continue porting ~22 legacy API endpoints to the new REST surface
- Absorb a structured knowledge transfer from the outgoing developer (recorded walkthroughs, deployment procedures, the undocumented quirks)
- Make the first calls on two end-of-life fronts: Angular 8 and Xamarin mobile

---

What We Need You To Bring

**The legacy depth (non-negotiable)**
- 7+ years of professional C#/.NET, with current production experience ---------- 8+
- Deep experience with a heavily-opinionated enterprise framework — ABP / ASP.NET Zero is the dream; an equivalent conventions-based monolith (with its DI container, module system, and dynamic API layer) is acceptable if you can prove you reverse-engineer framework internals from source
- Expert SQL Server, in multiple paradigms: EF Core migrations at scale, stored-procedure-first access, Dapper, and script-based deployment (DbUp). You've managed schema changes on a database that more than one application depends on.
- Large-scale data-quality engineering: backfills, reconciliations, deduplication — safely, auditable, reversible
- Authentication breadth: JWT bearer internals (if you've debugged ---------- 8 `TokenHandlers` vs `SecurityTokenValidators` change, mention it — you'll make our shortlist), Auth0 machine-to-machine, API-key schemes, custom token handlers
- Production integration engineering: payments, SMS at scale with consent/opt-out compliance, telephony webhooks, marketing automation APIs — with idempotency, retries, and activity logging as instincts, not afterthoughts
- Hangfire, Redis, SignalR; Docker builds; Azure DevOps
- Front-end pragmatism: you can maintain an Angular 8 app and a Vite/vanilla-JS app without needing either to be your favorite
- Testing discipline: xUnit, mocking, and written test plans/verification results as release artifacts

**The AI fluency (equally non-negotiable)**
- You use AI coding agents (Claude Code, Codex, Cursor) daily and seriously — and you know exactly where they hallucinate in legacy codebases (migrations, auth config, framework conventions) and how to gate for it
- You've built or extended an MCP server, or can show us a real tool-calling / structured-output LLM integration you shipped to production
- You can write and maintain repo AI-context documentation as a first-class engineering artifact
- You have opinions about reviewing AI-generated PRs at volume — formed by doing it

**The judgment**
- You've been the person a business depended on before, and it didn't scare you
- You default to guardrails-before-velocity: tests and CI first, then speed
- You'd rather inherit a profitable, imperfect system than build a perfect one nobody uses

---

Nice to Have

- Prior ASP.NET Zero / aspnetboilerplate commercial project (tell us immediately)
- Xamarin ? .NET MAUI migration experience; Angular major-version upgrade or SPA strangler-replacement leadership
- ---------- ; voice AI or real-time telephony pipelines; Supabase / Next.js / Vercel
- E-commerce cart, pricing, voucher, or commission domain experience
- Hospitality, ticketing, or OTA industry background
- You've led a framework migration (.NET 3.1 ? 8 ? 10 or similar) and lived to document it

---

Why This Role Is Different

**Total ownership.** No committee. You are the technical authority, working directly with the owner/architect and leadership. Your decisions ship.

**The AI-first model is real here, not a press release.** AI agents already have commit history in this repo. A production MCP server already runs. Your leverage is the point of the job.

**The system matters.** This isn't an internal tool nobody uses. Two hundred forty-eight people run their workday through it, and $20M+ of real revenue depends on it staying up.

**The problems are honest.** We showed you the backlog above — including the ugly parts — because the right candidate finds a 99.9%-error-rate integration *interesting*.

---

Logistics

- **Location:** Branson, MO preferred (hybrid); remote considered for an exceptional fit (US time zones)
- **Compensation:** Competitive, commensurate with the scope above — we know what total ownership is worth
- **Reports to:** Ownership/leadership, working alongside our AI development agents and a project-based systems architect

---

How to Apply

Skip the cover letter. Send us:

1. **Your resume and why you are the best candidate for the job**
2. **One paragraph on the gnarliest legacy system you've owned** — what it was, what broke, what you did
3. **Proof of AI fluency** — a repo, an MCP server, a PR trail, a writeup, anything that shows you actually work this way
4. **(Bonus)** Your answer to this: *"You inherit a .NET 8 app where JWTs validate successfully but the session user ID comes back null. Where do you look first?"*

If you've read this far and you're already thinking about the NULL-status backfill strategy — we should talk.

Really want to jump to the front of the line? Respond to my test questions. No cheating. Send this with everything else when you apply:

Here it is in plain text, ready to paste straight into an Onlinejobs.ph message or application form. I've reworded them slightly for written async answers and added length guidance so applicants know what "done" looks like:

SCREENING QUESTIONS — Please answer all 7 in your reply.
Short, direct answers are fine (3-6 sentences each). We are
looking for how you think, not essay length. If you don't
know an answer, say so honestly — guessing hurts you more
than a straight "I haven't hit that one yet."

1. We upgraded a .NET app ---------- Core 3.1 ---------- 8.
JWT tokens still validate successfully, but the session
user ID now comes back null. Where do you look first,
and why?

2. You inherit a legacy app where Program.cs still uses
WebHost.CreateDefaultBuilder instead of the modern Generic
Host. An AI coding agent submits a PR "modernizing" it to
Host.CreateDefaultBuilder. What do you do before merging?

3. 83% of our orders (about 308,000 rows) have a NULL
Status column. We can infer the correct status from related
data (cancellations, payment transactions, arrival dates).
Outline your approach to backfilling this safely.

4. An integration sync job has logged 3.9 million error
rows at a 99.9?ilure rate, but the business says the
integration works fine and their data looks correct.
What is your first move, and what would you NOT do yet?

5. You are the only human reviewer in a team where AI
agents (Claude Code / Codex) generate most pull requests.
An agent submits a 15-file PR that touches an EF Core
migration and auth configuration in a codebase you've
owned for only two months. Walk me through your review
process, step by step.

6. Two applications share one SQL Server database. One
uses EF Core with a 900-migration history. The other uses
stored procedures deployed with DbUp SQL scripts. You need
to alter a core table that both depend on. How do you do
it without breaking either app?

7. We have an MCP server that exposes contact search to
AI agents. It is a zero-identity proxy that forwards the
caller's auth to our API. We now want to add a tool that
lets AI agents send SMS campaigns to customers. What
concerns would you raise before building it?

BONUS (optional, strong answers get priority review):
Link us to proof you work with AI coding tools daily —
a repo, an MCP server you built, a PR history, or a
short writeup of your workflow.

SKILL REQUIREMENT
VIEW OTHER JOB POSTS FROM:
SHARE THIS POST
facebook linkedin
  BENCHMARKS  
Loading Time: Base Classes  0.0008
Controller Execution Time ( Jobseekers / Job )  0.0173
Total Execution Time  0.0187
  GET DATA  
No GET data exists
  MEMORY USAGE  
1,547,856 bytes
  POST DATA  
No POST data exists
  URI STRING  
jobseekers/job/Tech-Lead-Hospitality-Commerce-Platform-AI-First-Development-1694925
  CLASS/METHOD  
jobseekers/job
  DATABASE:  onlinejobs (Jobseekers:$db)   QUERIES: 13 (0.0111 seconds)  (Hide)
0.0003   SELECT *
                                
FROM exrates
                                WHERE rate_name 
'USD-PHP' 
0.0005   SELECT *
FROM `employer_jobs`
WHERE `job_id` = 1694925
 LIMIT 1 
0.0009   SELECT *
FROM `employers`
WHERE `employer_id` = 726059
 LIMIT 1 
0.0008   SELECT COUNT(*) AS `numrows`
FROM `t_thread` `t`
LEFT JOIN `t_thread_misc` `miscON `t`.`id` = `misc`.`thread_id`
WHERE `t`.`job_id` = 1694925
AND `misc`.`idIS NULL 
0.0007   SELECT e.business_namee.logoe.websitee.rebill_datee.date_added member_datehitsDATEDIFF('2026-08-15',ej.date_added) duration_daysDATEDIFF('2026-08-15',e.rebill_date) duration_rebillej.*, e.deactivate FROM employers eemployer_jobs ej WHERE e.employer_id ej.employer_id AND
                                   ((
e.user_level >= '500' AND ej.date_added <= e.rebill_date)
                                   OR 
e.employer_id '' OR (ej.date_approved <> '2000-01-01' and DATEDIFF('2026-08-15',ej.date_added) <= 14 ))
                                   AND 
e.deactivate != AND ej.deleted AND job_id '1694925' 
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1694925 
0.0017   UPDATE employer_jobs SET hit_counts '***Jul-23-2026=876***Jul-24-2026=120***Jul-25-2026=93***Jul-26-2026=28***Jul-27-2026=32***Jul-28-2026=27***Jul-29-2026=19***Jul-30-2026=32***Jul-31-2026=15***Aug-01-2026=8***Aug-02-2026=16***Aug-03-2026=19***Aug-04-2026=11***Aug-05-2026=14***Aug-06-2026=9***Aug-07-2026=10***Aug-08-2026=3***Aug-13-2026=1***Aug-15-2026=1' WHERE job_id'1694925'  
0.0006   UPDATE employer_jobs SET monthly_hits '***Jul-2026=1242***Aug-2026=92' WHERE job_id'1694925'  
0.0008   SELECT date_sent FROM jobseeker_sent_emails WHERE jobseeker_id '' AND job_id '1694925' AND status LIKE 'sent%' ORDER BY id DESC  
0.0003   SELECT *
FROM `employer_jobs_skills` `ejs`
LEFT JOIN `skills_categories` `scON `ejs`.`skill_id` = `sc`.`id`
WHERE `job_id` = 1694925 
0.0036   SELECT COUNT(*) AS `numrows`
FROM `employer_jobs`
WHERE `employer_id` = '726059'
AND `date_added` >= '2022-06-08' 
0.0003   select from teasers 
0.0003   SELECT FROM skill_categories WHERE skill_cat_id='' 
  HTTP HEADERS  (Show)
  SESSION DATA  (Show)
  CONFIG VARIABLES  (Show)