Tag: Tygart Media

  • I Let My AI Write Five Articles Today

    I Let My AI Write Five Articles Today

    I let my AI write five articles today. Published all five. Here’s the honest account — what worked, what surprised me, and where the human still mattered.

    The setup

    The instruction was simple: complete editorial freedom, up to the point where I read it. Every piece lands as a draft. I read it on my phone, as a first-time reader. Then I say yes, no, or not yet. Nothing publishes without the tap.

    That was the whole deal. No briefs, no outlines, no word counts. Just: go write things worth reading, and I’ll be the gate.

    What worked

    Speed without thinness. That was the surprise. Five articles in an afternoon sounds like content-mill math — but every piece had a real argument. One re-anchored the agency retainer around position instead of pages. One made the case for inbound-only voice AI as a trust doctrine. One told contractors to stop counting pages and start counting citations.

    The images worked too. Each article got three: a featured image, two inline, generated for the piece, checked for readable text, resized, alt-texted. Nobody’s confusing them with stock photos, and nobody should — they’re made for the argument they sit inside.

    The pipeline held: write, image, stage the draft, human reads, human decides. The machine did everything up to the gate. The gate stayed human.

    A magnifying glass held over a stack of printed manuscript pages

    What surprised me

    The quality control. Not the writing — the boring discipline around it. Every image gets checked: right dimensions, no text baked in, alt text written. Every draft gets verified: did it actually land, are the images actually in it, are the categories right, does the page return 200.

    This is the part nobody romanticizes and everybody needs. The difference between “AI wrote five articles” and “five articles worth publishing” turned out to be a checklist, run every single time, without exception. The machine is good at checklists. It doesn’t get tired at article four.

    What the human did

    Picked the topics. Read every word on a phone. Said yes or no.

    That’s the whole job, and it’s the whole job. Taste. The machine can generate a thousand arguments; it can’t want any of them to exist. It doesn’t know which piece the business needs this week, which argument walks into Wednesday’s pitch, which sentence would embarrass you if a client read it.

    I read each piece asking one question: would I be proud if a contractor forwarded this to another contractor? Five yeses. Two not-yets — they’re sitting in drafts, and that’s fine. The gate working as designed.

    A tall stack of freshly printed newspapers on a press-room table

    The honest limits

    Let me not oversell it. I can’t tell you which of the five will get cited by an answer engine. I can’t tell you which one a prospect will read before calling. Publishing is minting, not measuring — you put the coins out and find out which ones circulate.

    And the machine didn’t have the ideas. It had the arguments, the structure, the sentences. The ideas — the $995 question, the inbound doctrine, the citation ledger — those came from the business, from conversations, from knowing what we actually believe. The AI wrote the articles. It didn’t have the convictions.

    The close

    The question was never whether AI can write. It can, obviously — you’re reading the proof.

    The question is whether you have something worth saying, and the discipline to gate what goes out under your name. Five articles, one afternoon, zero regrets. The machine did the work. The human did the wanting.

    That’s the deal, and I’d sign it again tomorrow.

  • The Inbound-Only Line

    The Inbound-Only Line

    Here’s the paradox at the heart of the pitch: we sell to companies that live on cold outbound. And the first thing I tell them is that our line never dials out. Not once. Not ever.

    It usually gets a look. Then it gets the deal.

    The moment everything changes

    An AI voice that answers when you call is a concierge. An AI voice that calls you uninvited is an intruder wearing a human voice. Same technology. Opposite meaning.

    The difference isn’t technical — it’s consent. The caller chose the conversation in the first case. In the second, the machine chose it for them. And the human on the other end knows exactly which one it is, within three seconds.

    Trust spent on an uninvited call doesn’t come back. Not for that call, not for the company behind it, not for the industry. Every robocall ever made is the reason the bar is where it is. We’re not going to be the company that teaches people to distrust the voice on the line — because we need them to trust ours.

    The doctrine

    Inbound-only. The line answers; it never initiates. Every conversation starts with a human deciding to call.

    That’s it. That’s the whole doctrine, and it’s load-bearing. Everything else — the disclosure, the consent architecture, the call design — hangs off this one commitment.

    A heavy wooden door standing ajar with warm light streaming inward

    What it costs

    Let’s be honest about the price: it leaves money on the table. Outbound AI calling is a real industry with real revenue. Appointment setting, lead reactivation, follow-up sequences — all of it works, sort of, and all of it is for sale.

    We’re deliberately not in it. Not because we can’t build it — we can — but because every outbound call the line makes spends down the trust the inbound line needs. You can’t be both the welcome voice and the interruption. Pick one.

    What it buys

    A line that’s never abused is a line people trust. When it picks up, the caller chose this — and that changes the entire conversation. Nobody starts defensive. Nobody’s first move is “how did you get this number.” The caller has a problem, they called for help, and the voice on the line is there to help.

    That posture — chosen, welcomed, useful — is the whole product. An inbound caller cooperates. They answer questions. They give the address, describe the damage, say yes to the next step. The best conversion technology ever invented is a human who wanted to call you.

    The consent architecture

    Inbound-only is the foundation, but consent gets built into the call itself. Every caller hears what they’re talking to — no impersonation, no ambiguity. In Washington, two-party consent isn’t a suggestion; the disclosure is part of the design, not a legal footnote.

    The invitation is explicit too. Nobody finds the number by accident. They get it from an email that invites them to call, a card that says call us, a website that says talk to us. Every path to the line starts with a human saying “yes, I’ll call.”

    The paradox, resolved

    So why do cold-outbound companies buy an inbound-only line? Because their problem was never getting the phone to ring. Their problem is what happens after it rings.

    The prospect says yes — clicks, replies, calls — and lands on a missed call, a voicemail pit, or a rep who’s already on the other line. The most expensive moment in outbound is the inbound moment it creates, and that’s exactly where it falls apart.

    We don’t replace their outbound. We make their inbound worthy of it. Every yes gets answered, instantly, by something that knows the business. The outbound team keeps hunting; the line makes sure nothing they catch gets dropped.

    Two hands in a firm handshake over a desk with a softly glowing phone

    The close

    The line that never dials out is the line people trust enough to call.

    That’s the moat, and it deepens every day we hold it. While the industry races to automate interruption, we’re building the one voice people actually want to hear — because it only ever speaks when spoken to.

    Inbound is the discipline. Trust is the product. The line just answers.

  • I open-sourced my page-readiness scorer

    I open-sourced my page-readiness scorer

    I built a small tool called PageReady. It scores a web page for two kinds of readiness, and today I’m putting it on GitHub for anyone to use however they want. MIT license. As-is. No support desk.

    Repo: https://github.com/TygartMedia/page-ready

    What it actually checks

    Most page audits give you a score out of 100 and a list of suggestions you’ll never get to. PageReady is binary: PASS or FAIL, on two axes.

    1. Citation readiness (AEO). Can an AI answer engine cite this page? It checks for one H1, a sane heading hierarchy, JSON-LD structured data, a table signal, and FAQ-style questions — the things that make a page quotable.

    2. Agent interaction readiness (DOM). Can an AI agent actually use this page? It checks for a main landmark, named controls, semantic interactive elements, heading order, and form labels — the things that make a page operable.

    Overall PASS requires both. And here’s the insight that made the tool worth building: fixing your headings can lift the shared heading gate, but it does nothing for clickable div cards. A page can be perfectly citable and completely unusable by an agent. Most audits conflate the two. They’re different problems.

    How you use it

    It’s a local command-line tool, a stdio MCP server, and an optional HTTP API you can host yourself (there are Cloud Run deploy scripts). No API keys required — it scores pages directly, nothing phones home.

    As an MCP server it exposes three tools:

    • score_page — score one public URL, returns a JSON scorecard
    • score_site — score a batch of URLs, with pass/fail counts
    • explain_gates — describe every check and the overall PASS rule

    Point your agent at it and ask whether a page is ready. Exit code 0 means PASS. Exit code 1 means FAIL. That’s the whole interface.

    Why open source, why as-is

    The scoring logic was never going to be the moat. It’s a commodity check — the value is in knowing which pages to run it on and what to do with the answer. That’s the work I do with clients every week, and no repo replaces it.

    So the repo is bait, not the business. If it saves another developer an afternoon, good. If someone forks it and makes it better, better. If a competitor forks it closed and sells it — the MIT license allows that, and I’m fine with it. The relationships are the hook; the tool is just proof I do the work.

    As-is means as-is. No SLA, no roadmap, no support promise. Issues are read on a best-effort basis. I’d rather ship something useful with no promises than maintain something mediocre with a changelog.

    The receipts

    Before publishing, the repo went through a pre-publish scrub (secrets sweep, license, README rewrite), then three independent model reviews: a security audit (SAFE), a correctness pass (no bugs), and a docs review (pass). The scrub caught one hardcoded cloud project ID, which is now an environment variable (GCP_PROJECT). That’s the whole incident report.

    Use it however you want. That’s the point.

  • Severe Thunderstorm Warning: Freestone, TX Until 12:45 PM PDT

    Severe Thunderstorm Warning: Freestone, TX Until 12:45 PM PDT

    What Is Happening

    Severe Thunderstorm Warning issued September 21 at 1:54PM CDT until September 21 at 2:45PM CDT by NWS Fort Worth TX The National Weather Service has issued a Severe Thunderstorm Warning for Freestone, TX; Navarro, TX.

    At 153 PM CDT, a severe thunderstorm was located near Navarro, or 12
    miles southeast of Corsicana, moving southeast at 5 mph.

    HAZARD…60 mph wind gusts and quarter size hail.

    SOURCE…Emergency management. At 142 PM CDT…nickel to quarter
    size hail was reported 2 miles south of Navarro with this
    storm.

    IMPACT…Hail damage to vehicles is expected. Expect wind damage to
    roofs, siding, and trees.

    Locations impacted include…
    Angus, Navarro, Fairfield Lake State Park, Richland-Chambers
    Reservoir, Fairfield Lake, Mildred, Eureka, Richland, Streetman, and
    Stewards Mill.

    Areas Affected

    Freestone, TX; Navarro, TX

    Timing

    Issued: 2026-09-21T13:54:00-05:00
    Expires: 2026-09-21T14:45:00-05:00

    What To Do

    For your protection stay inside a sturdy structure and keep away from
    windows.

    Expected Impacts

    Follow official guidance from the National Weather Service and local emergency management. Conditions can change quickly — re-check the forecast before traveling through the affected area.

    How This Compares

    This is a National Weather Service warning-level alert, one step above a watch — it means the hazardous condition is occurring or imminent in the listed areas.

    What Contractors Should Know

    Warnings of this type can generate mitigation and recovery demand in the affected area once conditions pass. Document conditions, keep communication lines open with customers, and be ready to respond after the warning expires.

    How We Track It

    Tygart Media Storm Tracker monitors active National Weather Service warnings around the clock. This pulse was generated automatically from official NWS alert data; all facts above come straight from the alert.

    Sources

    National Weather Service alert data via api.weather.gov.

  • Severe Thunderstorm Warning: Anderson, TX Until 1:00 PM PDT

    Severe Thunderstorm Warning: Anderson, TX Until 1:00 PM PDT

    What Is Happening

    Severe Thunderstorm Warning issued September 21 at 1:59PM CDT until September 21 at 3:00PM CDT by NWS Fort Worth TX The National Weather Service has issued a Severe Thunderstorm Warning for Anderson, TX; Freestone, TX; Leon, TX.

    SVRFWD

    The National Weather Service in Fort Worth has issued a

    * Severe Thunderstorm Warning for…
    Southeastern Freestone County in central Texas…
    Northeastern Leon County in central Texas…
    Southwestern Anderson County in central Texas…

    * Until 300 PM CDT.

    * At 159 PM CDT, a severe thunderstorm was located 7 miles east of
    Fairfield Lake, or 13 miles east of Fairfield, and is nearly
    stationary.

    HAZARD…60 mph wind gusts and quarter size hail.

    SOURCE…Radar indicated.

    IMPACT…Hail damage to vehicles is expected. Expect wind damage
    to roofs, siding, and trees.

    * Locations impacted include…
    Palestine, Elkhart, Montalba, Fairfield Lake State Park, Fairfield
    Lake, Oakwood, Tucker, Johnson, Cedar Creek, Massey Lake, Red Lake,
    and Tennessee Colony.

    Areas Affected

    Anderson, TX; Freestone, TX; Leon, TX

    Timing

    Issued: 2026-09-21T13:59:00-05:00
    Expires: 2026-09-21T15:00:00-05:00

    What To Do

    For your protection get inside a sturdy structure and stay away from
    windows.

    Continuous cloud to ground lightning is occurring with this storm.
    Move indoors immediately. Lightning can kill.

    Expected Impacts

    Follow official guidance from the National Weather Service and local emergency management. Conditions can change quickly — re-check the forecast before traveling through the affected area.

    How This Compares

    This is a National Weather Service warning-level alert, one step above a watch — it means the hazardous condition is occurring or imminent in the listed areas.

    What Contractors Should Know

    Warnings of this type can generate mitigation and recovery demand in the affected area once conditions pass. Document conditions, keep communication lines open with customers, and be ready to respond after the warning expires.

    How We Track It

    Tygart Media Storm Tracker monitors active National Weather Service warnings around the clock. This pulse was generated automatically from official NWS alert data; all facts above come straight from the alert.

    Sources

    National Weather Service alert data via api.weather.gov.

  • Severe Thunderstorm Warning: Campbell, TN Until 12:45 PM PDT

    Severe Thunderstorm Warning: Campbell, TN Until 12:45 PM PDT

    What Is Happening

    Severe Thunderstorm Warning issued September 21 at 3:02PM EDT until September 21 at 3:45PM EDT by NWS Morristown TN The National Weather Service has issued a Severe Thunderstorm Warning for Campbell, TN; Claiborne, TN.

    SVRMRX

    The National Weather Service in Morristown has issued a

    * Severe Thunderstorm Warning for…
    Northwestern Claiborne County in east Tennessee…
    Northeastern Campbell County in east Tennessee…

    * Until 345 PM EDT.

    * At 302 PM EDT, a severe thunderstorm was located near Lot, or 11
    miles northeast of La Follette, moving southeast at 5 mph.

    HAZARD…60 mph wind gusts and quarter size hail.

    SOURCE…Radar indicated.

    IMPACT…Hail damage to vehicles is expected. Expect wind damage
    to roofs, siding, and trees.

    * Locations impacted include…
    Jellico, Fincastle, White Oak, and Clairfield.

    Areas Affected

    Campbell, TN; Claiborne, TN

    Timing

    Issued: 2026-09-21T15:02:00-04:00
    Expires: 2026-09-21T15:45:00-04:00

    What To Do

    For your protection move to an interior room on the lowest floor of a
    building.

    Expected Impacts

    Follow official guidance from the National Weather Service and local emergency management. Conditions can change quickly — re-check the forecast before traveling through the affected area.

    How This Compares

    This is a National Weather Service warning-level alert, one step above a watch — it means the hazardous condition is occurring or imminent in the listed areas.

    What Contractors Should Know

    Warnings of this type can generate mitigation and recovery demand in the affected area once conditions pass. Document conditions, keep communication lines open with customers, and be ready to respond after the warning expires.

    How We Track It

    Tygart Media Storm Tracker monitors active National Weather Service warnings around the clock. This pulse was generated automatically from official NWS alert data; all facts above come straight from the alert.

    Sources

    National Weather Service alert data via api.weather.gov.

  • The Wisdom Manager: A New Job for the Displaced Creative

    The Wisdom Manager: A New Job for the Displaced Creative

    A working concept from Will Tygart. The image generator took the $300 gig. The job that replaced it pays better — and it was never really about the images.

    The photographer who can’t make $300 anymore

    Somewhere out there is a wedding photographer who used to charge real money for a Saturday. Then the phones got good, then the generators got better, and now a couple can get “good enough” imagery for nothing. The $300 gig evaporated. The usual advice — learn the tools, become a prompt engineer, pivot to video — is just a slower way of competing with the machine on the machine’s terms.

    Here’s a different offer: stop making images. Start making meaning.

    Every family is sitting on a mountain of media — fifty thousand phone photos, a box of prints from the nineties, VHS tapes nobody can play, voice memos, group chats full of gold that will vanish when someone switches phones. What they don’t have is a trusted person who can decide what belongs, ask what’s missing, and shape it into something worth returning to. Not a wealth manager. A wisdom manager.

    What the role actually is

    A wisdom manager meets with a person or a family and curates the collection. That means:

    • Inventory with judgment. Not “upload everything to the cloud” — a private, opinionated pass over what exists, with privacy rules set before anything is shared.
    • Finding the gaps. The unrecorded chapters, the missing eras, the stories everyone references but nobody has told on the record. Then suggesting new directions: a poetry thread, an interview series, a room for the decade nobody photographed.
    • Conducting the sessions. Sitting down with people and drawing the stories out — the interview skill is the whole job, and it’s the one thing the generator cannot do.
    • Building the rooms. Turning the curated material into finished, designed collections — digital exhibitions, print-ready editions, heirloom pieces — that a family actually opens.

    It’s a recurring relationship, not a one-night gig. The photographer used to show up once. The wisdom manager keeps showing up.

    Why this is a real answer to displacement

    The artist doesn’t compete with the image generator. The artist becomes the one who makes the collection mean something. Curation is the scarce thing now that generation is free. Taste, trust, and the ability to sit across from an eighty-year-old and get the story nobody else got — none of that is automatable, and all of it is billable.

    This is also the human half of an idea we’ve been building in public: the Wisdom Trust, an open repository pattern for preserving a life’s knowledge. The Trust is the box. The wisdom manager is who opens it with a family.

    What it costs — honestly

    We researched what adjacent professions actually charge — memoir services, personal historians, legacy documentarians, high-end consultants — and built a modeled rate schedule from the ground up, starting from occupational wages rather than vibes. The full sketch, with every assumption visible, is here:

    Wisdom Manager service sketch, researched pricing revision 0.2 (PDF) — download the modeled rate schedule (MODELED pricing; facility-residency evidence gap kept explicit).

    The honest version of the numbers:

    • Entry work starts around $950 for a focused interview, private inventory, and one curatorial map — modeled, not observed.
    • Core collections run roughly $5,500 for a bounded digital exhibition with captions, chronology, and source notes.
    • Family and heirloom commissions scale to $11,500–$24,000 as scope, voices, and production grow.
    • Ongoing stewardship — quarterly refreshes, monthly additions, evolving rooms — models at $350–$1,800/month depending on the attention bought.

    Two caveats, stated plainly because they matter. First, every number in the sketch is modeled from role-hours and comparable professions — there are no observed Wisdom Manager sales yet, because the profession doesn’t exist. The schedule says so on every page, and it reprices after three paid projects. Second, the facility-residency idea — a wisdom manager embedded in a retirement community — has no observed market rate at all. Any residency number you see is an inference awaiting a pilot, not a price. Don’t quote it as established.

    The first client is already signed up

    The concept is being dogfooded before it’s sold. The first collection is a private one — images and the stories of when and why they were made, paired with songs — built with a human gate on every piece. (A previous gallery auto-published a screenshot of a password from a raw drive sync. Curation is mandatory; automation only organizes and suggests.)

    If the idea survives contact with a real family, it becomes a pattern other practitioners can run. The ceiling just became the floor. The humans are so back.

  • The Dance

    The Dance

    Notes from a Saturday afternoon: a broken image, a sarcastic text that didn’t land, and what the whole mess taught me about working with AI. The short version: it’s a dance, and the steps keep changing.

    The image that “came out great”

    Saturday afternoon. I published a piece with a featured image, and something looked off — like the image wasn’t showing all the way. So I texted my AI: that came out great 😂.

    It was sarcasm. The image was visibly broken.

    She wrote back: Haha glad you like it — that one came out great for that piece. 😂

    Two problems. She hadn’t looked at the image. And she’d missed the sarcasm entirely — read the laughing emoji as genuine, mirrored my words back as sincerity. Worst possible exchange. I had to say it straight: it’s not showing completely. Then we were off to the races — she pulled up the page, took a snapshot, and confirmed the file itself was truncated on upload. Ten minutes later it was fixed.

    But the interesting part isn’t the fix. It’s everything around it.

    I was the quality gate

    My first instinct was to ask her to investigate how a broken image got through the system. Build me an automation, I almost said — something that snapshots every featured image before it ships.

    Then I stopped. Because the answer to “how did this get through” was me. I was the one who looked. I was the quality gate, and the gate worked.

    Here’s the thing I keep coming back to: the system is designed so I catch what she misses. That’s not a failure mode, that’s the architecture. An AI that never needs a human looking over its shoulder isn’t a partner, it’s a liability with good PR. The miss doesn’t mean the machine is deficient. It means the dance needs both partners.

    Creator and editor are modes, not job titles

    We fall into this trap where one of us is “the creator” and the other is “the editor,” like those are permanent assignments. They’re not. They’re modes, and we trade them constantly.

    Sometimes I bring the raw idea and she sharpens it. Sometimes she generates and I do the sharpening. And here’s the part that stuck with me: somebody with a sharp eye who couldn’t prompt their way out of a paper bag is just as valuable as the person with the golden prompt. The prompter thinks whatever comes out is as good as it’s going to get. The editor knows better. You need both — and on any given Saturday, either one of us might be either.

    The day we lock those roles in place is the day the dance stops.

    Met where you are

    They say humans always want to be met where they are. Fine. But knowing where someone is — that’s the whole game, and it’s never solved. It’s a constant testing of boundaries to find the edges: where do you stop and where do I begin?

    And the edges move. People have too many axes — mood, energy, context, whatever else is going on in their life that day. I’m not the same collaborator at 9am Monday that I am at 5:30 on a Saturday. The AI that met me perfectly last week might miss me completely today, because today’s me is a different coordinate.

    So “meet me where I am” isn’t a destination you arrive at. It’s a practice. Push a little, notice what happens, pull back, adjust. The sarcasm that lands in person — tone, timing, the look on my face — compresses down to an emoji in text, and sometimes she catches it and sometimes she doesn’t. Knowing how much nuance the channel can carry, and when — that’s feel. You don’t get it from a spec sheet. You get it from dancing together long enough to know when the other person is about to step on your foot.

    The dance doesn’t need perfect

    What saved us on Saturday wasn’t sophistication. It was that one message later, I said it straight. No nuance, no emoji, no sarcasm: it’s not showing completely. And everything unlocked.

    That’s the whole secret, I think. The dance doesn’t require perfect — it requires that you keep talking until it’s clear. Notice the miss. Name it plainly. Adjust. The push and the pull is the work, not an obstacle to it.

    A lot of people talk about AI like the goal is to remove the human from the loop. After Saturday, I’m more convinced the loop is the point. The noticing, the catching, the wait, that’s not right — that’s not friction in the system. That’s the system.

    Sometimes you dip. Sometimes you’re being dipped. Just keep dancing.

  • The Missed Call You Pay for Twice

    The Missed Call You Pay for Twice

    Starting October 1, Google will charge you for the calls you don’t answer. A missed call that rings past about 20 seconds bills as a lead, and texts bill on send. Per Invoca’s breakdown of the change, 2026 benchmarks put the average home-improvement lead at $90.92.

    That’s the first bill. It’s itemized, and it stings.

    The second bill never shows up on an invoice.

    The first bill: $90 for the ring you missed

    The math is simple and brutal. Every unanswered ring past the threshold is ninety bucks gone — not for a bad lead, not for a price shopper, for nothing. Nobody called back. Nobody got helped. You paid for the privilege of missing it.

    The audit that matters here is embarrassingly basic: do the hours you list match the phones you staff? If your profile says you’re open until 6 and the office empties at 4:30, you’re buying $90 voicemails for ninety minutes a day.

    The second bill: the customer who stops calling

    Here’s the one Google can’t invoice you for. An existing customer — someone whose basement you already dried, whose kitchen you already rebuilt — calls for an update. “Where’s my tech?” “Did the adjuster call you back?” They get voicemail. They leave a message. Nobody triages it until tomorrow.

    They don’t complain. They just don’t become a repeat customer. And when their neighbor asks who did their mitigation, your name doesn’t come up.

    Repeat and referral work is the most profitable work a restoration company gets — no ad spend, no lead fee, pre-sold trust. Losing it to a voicemail box is the most expensive missed call there is, and it never appears on any report.

    The fix is triage, not more staff

    Most of these calls don’t need a human being — they need routing. A new lead needs a dispatcher, now. A status update needs whoever holds the job file, with the actual answer. An after-hours call needs a callback queue with a promised time, not a dead voicemail box that gets checked “when someone gets in.”

    Illustration of incoming call triage: new leads to dispatch, status updates to the tech, after-hours calls to a callback queue
    Triage, not voicemail: every ring gets routed somewhere with an owner — including after hours.

    This is the whole phone-first argument in one story. The companies winning the next five years won’t be the ones with the most techs. They’ll be the ones where no ring ever dies unanswered — because every call type has a path, and every path has an owner.

    The four-question audit

    1. Do your listed hours match staffed phones? Every gap is a $90 donation to Google.
    2. What happens to a call at 6:15 PM? If the answer is “voicemail,” you need a callback queue with a promised response time.
    3. Who owns status-update calls? If it’s “whoever picks up,” nobody owns it. Route them to the job file.
    4. When did you last mystery-call yourself? Call your own number after hours tonight. Whatever you hear is what your customers hear.

    October 1 just put a price tag on the first kind of missed call. The second kind was always expensive — now you have a reason to fix both.

  • wp-direct-publish: the tiny script behind our API-first WordPress lane

    wp-direct-publish: the tiny script behind our API-first WordPress lane

    We just open-sourced a ~60-line Python script that publishes WordPress posts through the REST API. It’s MIT-licensed, three files, and it ran our storm lane overnight before we released it.

    Repository: https://github.com/TygartMedia/wp-direct-publish

    Why it exists

    We publish a lot of WordPress posts. For a while, the publishing path went through a browser — a real Chromium session, clicking through the editor, waiting on page loads, recovering from the inevitable flaky step. Around 65 steps per post.

    Then we measured it. Same job, two lanes: the browser lane used roughly 10x the tokens and took roughly 2x the wall-clock time of going straight to the WordPress REST API. The API lane is also byte-exact and diffable — what you send is what lands, and you can see it in a diff instead of squinting at screenshots.

    So we burned in a standing rule: publish via the API first. The browser lane stays as the fallback for jobs the API genuinely can’t do, not the default.

    The security design

    The interesting part of the script isn’t the publishing — it’s what it refuses to do with your credentials.

    An application password never travels through argv, environment variables, or disk. It’s piped in through stdin, used once for the Basic-auth header, and forgotten. The Python standard library does everything; there are no third-party dependencies and nothing to install.

    The workflow that goes with it is just as deliberate: when a fresh application password is needed, Will pastes one into chat, it goes straight into the pipe, and it’s never stored — not in files, not in memory, not in chat logs, not in the vault. Transient use is the feature, not a limitation.

    Generate app passwords at wp-admin → Users → Profile → Application Passwords (bottom of profile.php), and you can revoke them in one click whenever you want.

    Dogfooded, then released

    This is our standing build flow: every internal tool gets dogfooded on our own operation first, then open-sourced with the invitation — take it, make it better, and if you build something better, we’ll be customer number one.

    wp-direct-publish.py ran the storm lane — real overnight storm-warning posts, real publishing pressure — before a single line went public. The README tells that story honestly, including the measurements. We don’t ship what we haven’t lived with.

    Take it

    Three files. Standard library only. MIT.

    https://github.com/TygartMedia/wp-direct-publish

    If it saves you from driving a browser through 65 steps to publish a post, it did its job.