Davis Studios

02 Selected work

Seven projects,
start to finish.

Websites for a client and for my own business, an app of my own, and four bots I run every day. Each one taken the whole way, from design and code to the paperwork and safety rules at the end of it.

Projects
Seven
Disciplines
Design · Build · Automation
Bots running
Four
Year
2026
01 Client project

TuneUp Skin Studio

Website · Olmos Park, San Antonio

A one-room studio needed a site that felt like the room itself — calm, personal, unmistakably not a chain. Brittany Franco has been a licensed esthetician since 2013 and opened TuneUp in 2023; the site had to carry that, and get people to a booking.

Five pages, hand-written HTML and CSS, no framework and no page builder. I photographed the space at three times of day so the light on the site matches the light you walk into. Booking hands off to Vagaro, where her calendar already lived.

The constraint that shaped it: she is the business. Stock photography of a generic spa would have undone the whole point, so every image is the actual room, the actual products and the actual esthetician.

Built with
HTML, CSS, vanilla JavaScript
Pages
Home, about, services, reviews, visit
Booking
Vagaro integration
Photography
Shot on site
Year
2026
The TuneUp treatment room lit by afternoon window light
Brittany Franco, the studio's esthetician
A treatment in progress
Photography shot on site for the build.
02 Own business

Mike's Lights

Website · Christmas light installation, San Antonio

My own seasonal business: we supply the lights, hang them properly and come back in January to take them down. The site has one job, which is getting a homeowner to call. The phone number leads everywhere — the header, the main buttons, and a bar pinned to the bottom of every phone screen so it's always one thumb-tap away.

The thinking: answer the question people actually have. Most installers bury takedown; here it's the first section after the hero, because "who takes them down in January?" is what homeowners ask. Every photo is a real install from three seasons, 28 originals cut down to a hero and ten gallery shots, and the gallery loads lazily so a first visit stays light on a phone connection.

For people who'd rather not call, a quote form posts to the same lead pipeline the marketing coordinator below watches. If the form ever can't send, it points the visitor to the phone number instead of losing the lead. The gallery viewer works with a keyboard, arrow keys and swipe, and with JavaScript off the photos still show.

Built with
HTML, CSS, vanilla JavaScript
Page
One page, phone-first
Photography
Real installs, 2023 to 2025
Leads
Call, text a photo, or the quote form
Year
2026
Mike's Lights home page: a stone house outlined in warm white lights at dusk, with call and text buttons
The same page on a phone, with the call bar pinned to the bottom of the screen
The live site, desktop and phone.
03 Own product

Meet Day

iOS & Android · pre-launch

Most home-workout apps run a stopwatch: forty seconds on, twenty off, the same for a push-up, a plank and a hamstring stretch. That isn't how anyone is actually coached, so I rebuilt the programming from published guidance — ACSM, NASM, ACE, ISSA and the r/bodyweightfitness Recommended Routine.

Sets are counted in reps and advance when you finish them. Only genuinely isometric work runs a clock. Rest scales by movement type, every session opens with a warm-up and closes with stretching, and the plan progresses week over week. Every number in the generator cites the source it came from.

The free tier is a real product rather than a demo: 297 exercises and full plans. Expert progressions, the training journal and custom workouts are what the one-time unlock buys.

Built with
React Native, Expo
Library
336 exercises with muscle targeting
Model
Free tier, one-time unlock
Billing
RevenueCat over store billing
Year
2026
Meet Day store banner: wordmark beside a loaded barbell mark
Meet Day app icon
Identity, icon and store artwork built alongside the app.

03 Automation

Four bots, running every day.

My own systems, running around the clock on a Mac mini. Each one has a live dashboard, hard limits written in plain code, and a person who approves anything that matters. They're experiments with my own money and my own businesses, not products for sale, and nothing here is financial advice.

04 Own system

Coinbase trading bot

Crypto swing trading · live since September 2026

Every five minutes it checks the market, and it only buys while Bitcoin is above its 200-day average. When that rule says no, it sits in cash. Three strategies sit behind it: buying dips inside an uptrend, buying breakouts to new 20-day highs on heavy volume, and a trend ensemble that scores each coin on nine lookbacks from five days to a year and sizes the position down when the coin is volatile.

The thinking: don't trust a strategy because it sounds right. Before giving the bot more room, I built a backtester that replays Coinbase history since 2021 through the bot's own code, with real fees and slippage. The verdict was blunt. The setup it launched with lost money in replay, and dip-buying was the main reason. Only the trend ensemble came out ahead, so that became the next build, behind a go-live check that has to pass before it can be switched on.

The rest is about surviving bad days. Stop-losses live on Coinbase itself, so a crashed computer never leaves a position unprotected. Each trade can lose at most a fixed slice of the account, a bad day pauses buying, and a deep drawdown stops everything until I look. Trend orders rest as post-only limit orders to pay the lower maker fee, then fall back to a normal order after an hour. Two coins are locked out in code, and the bot can never sell them.

Built with
Python, Coinbase Advanced Trade API
Checks
Every 5 minutes, as a background service
Backtest
Daily candles from 2021, hourly from 2022
Tests
296 automated tests
Year
2026
Coinbase bot dashboard: account value chart and open positions, each with the reason it was bought
The Control Center: trading style, strategies, coin list with two coins locked, and what the settings mean in practice
Live dashboard and Control Center. Dollar amounts and position sizes blurred.
05 Own system

Polymarket sports bot

Sports prediction markets · Polymarket US

Every two minutes it scans roughly five hundred open game markets and compares each price with what the sportsbooks think, using a consensus of their odds with the bookmakers' margin removed and the sharpest book weighted double. It buys only when the gap is still worth it after fees. Right after a buy it leaves a sell order resting at the sportsbooks' fair price, and if the books turn against the position before the game starts, it gets out.

The thinking: the edge isn't predicting games. It's lag. Before kickoff Polymarket tends to trail the sportsbooks, so a resting sell at fair value can lock in the gap without needing the team to win, and as a resting order it earns the exchange's maker rebate instead of paying a fee. Every trade also records closing-line value, which tells you whether an edge is real long before wins and losses do.

The rules came from its own record. Every automatic buy under 30 cents had lost, so there's now a floor there, and true long shots are never automatic: the bot emails me and waits for a reply of YES. It runs on its own fixed budget that ignores my manual trades, and after a lost network reply once caused duplicate orders, every order is now written down before it's sent and confirmed against the fill history. The odds feed is a free plan, so its limited credits go to whichever sport has the stalest data.

Built with
Python, Polymarket US API, FastAPI
Scans
Every 2 minutes, pre-game only
Sizing
Quarter-Kelly, capped at 5% a trade
Data
Sportsbook odds feed, ESPN lines
Year
2026
Polymarket bot dashboard: trading style, options such as emailing long shots for approval, and the sports it covers
Live dashboard and Control Center. Dollar amounts blurred.
06 Own system

Marketing coordinator

AI marketing assistant · Mike's Lights and Davis Studios

It works like a marketing assistant for my two businesses. Claude is the brain: it plans campaigns, writes the copy, finds prospects, keeps a project board and talks with me in a chat panel. The contact forms on this site and on Mike's Lights post to a small Cloudflare Worker, and a hot lead sends me an email and a text.

The thinking: an AI that can send email needs rules it can't talk its way around. Every outbound action passes a guard written in plain code. Nothing goes out unless it belongs to a campaign I approved, and if the campaign changes after approval it drops back to waiting for me. Claude may add one short personal line to an approved email, with no links, prices or promises. Daily sending caps ramp up slowly, a sending domain pauses itself on a high bounce rate or any spam complaint, and every message carries a working unsubscribe.

It also knows what it shouldn't do. It won't guess at homeowners' personal contact details. It asks me which route I want instead. And it costs nothing new to run: the brain runs on my existing Claude plan with a daily cap, and everything else sits on free tiers.

Built with
Python, Claude, Cloudflare Workers
Approvals
Once per campaign, re-approval on any change
Guard
Eleven hard rules, enforced in code
Running cost
Nothing new per month
Year
2026
Marketing coordinator dashboard: items ready for approval, questions waiting on the owner, and the chat panel
Live dashboard in practice mode. Personal details blurred.
07 Own system

$500 Bot Experiment

Automated YouTube Shorts · three a week

A pipeline that turns the Coinbase bot's real trading record into short videos: results on Monday, one trade broken down on Wednesday, how it works on Friday. It reads the bot's database without being able to change it. Claude drafts the script, a local voice model reads it, word-level timing syncs the captions, and Remotion renders it in a trading-terminal look.

The thinking: the numbers have to be real, and a person has to sign off. Every figure in a video comes straight from the bot's data, never from the script writer. Ideas I add only change the angle and tone. When a video is ready, I get an email with a review link where I can approve it, edit a line and re-render in about a minute, or ask for a redo with a note. Nothing uploads by itself, and there's no financial-advice language.

The dashboard has its own chat, so I can say "pause after Wednesday" in plain words, but that chat can't approve, export or delete anything. Like the other bots, it costs nothing new to run.

Built with
TypeScript, Remotion, Kokoro TTS, Whisper
Schedule
Mon, Wed, Fri
Review
Every video approved by hand
Running cost
Nothing new per month
Year
2026
The channel dashboard: upcoming videos, the thinking bar for ideas and rules, voice and look settings, and the chat panel
A frame from a Short: the one rule that keeps the bot out of crashes, is Bitcoin above its 200-day average
The review dashboard and a frame from a Short. Dollar amounts blurred.
Next · Current
Who you're actually hiring
About →