Author: Will Tygart

  • Tacoma CBD Office Vacancy at 18.5% vs Seattle at 35.6% — The Cost-Basis Story for Operators

    Tacoma CBD Office Vacancy at 18.5% vs Seattle at 35.6% — The Cost-Basis Story for Operators

    Here’s a number that should get every commercial real estate operator’s attention: Tacoma’s central business district office vacancy sits at approximately 18.5%, while Seattle’s downtown vacancy has ballooned past 35%. If you’re an investor, a value-add fund, or an adaptive reuse developer, Tacoma’s cost basis tells a completely different story than what you’ll find 30 miles north — and the spread is widening.

    The Vacancy Gap Is Structural, Not Cyclical

    Seattle’s office market collapse isn’t a blip. The combination of remote work permanence at major tech employers, the departure of companies like Amazon shifting workers to other metros, and a 2019-era construction pipeline that delivered millions of square feet into a market that no longer needs them has created a structural oversupply problem. The City of Seattle’s own economic data shows office-dependent foot traffic downtown remaining 30-40% below pre-pandemic levels.

    Tacoma is different. The CBD never had the same concentration of tech-sector office tenants that drove Seattle’s bubble. Tacoma’s tenant base is more diversified: government agencies (federal, state, county, and city offices), healthcare systems, law firms, financial services, and the military-adjacent professional services sector tied to Joint Base Lewis-McChord. These are tenants that require in-person operations and aren’t going fully remote.

    The Cost Basis Story

    According to data from CoStar and local brokerage reports, Class B office space in Tacoma’s CBD trades at $150-$250 per square foot — roughly 40-60% below comparable Seattle CBD product. Lease rates follow the same pattern: $22-$32 per square foot full-service in Tacoma versus $38-$55+ in Seattle’s core.

    For adaptive reuse operators, this cost basis creates a fundamentally different project math. Converting a 50,000 SF Class B office building to mixed-use (ground floor retail, upper floors residential or creative office) in Tacoma means acquiring the asset at a fraction of what the same conversion costs in Seattle, while serving a market with genuine demand for housing and experiential retail.

    The City of Tacoma Planning and Development Services department has been actively encouraging adaptive reuse through streamlined permitting for conversions and the Multi-Family Tax Exemption (MFTE) program that provides 8-12 year property tax exemptions for qualifying residential projects in designated areas including downtown.

    What’s Already Converting

    Tacoma’s adaptive reuse wave isn’t theoretical — it’s happening. The Stadium District and downtown core have seen multiple conversions of older office and commercial buildings to residential, boutique hospitality, and mixed-use projects over the past five years. The economics work because the acquisition cost is low enough that conversion costs (typically $80-$150 PSF for office-to-residential depending on mechanical systems) still produce viable total project costs.

    The Tacoma downtown submarket benefits from genuine walkability, proximity to the University of Washington Tacoma campus, Sound Transit Link light rail connectivity, and a restaurant/entertainment scene that has matured significantly since 2018. These are the demand drivers that make conversions pencil — tenants and residents actually want to be there.

    Why the Spread Will Widen

    Seattle’s vacancy problem is self-reinforcing. As buildings empty, ground-floor retail suffers, which reduces foot traffic, which makes remaining tenants less likely to renew. The tax base erodes, leading to service cuts that further reduce downtown’s attractiveness. Seattle’s CBD is entering a doom loop that will take years to stabilize.

    Tacoma, conversely, has natural demand floors. Pierce County government operations aren’t leaving downtown. The federal courthouse isn’t relocating. The healthcare systems serving South Sound aren’t going remote. This institutional demand provides a vacancy floor that Seattle’s tech-dependent market lacks.

    Additionally, Pierce County population growth continues to outpace available housing supply, creating sustained residential conversion demand. The Puget Sound Regional Council projects continued in-migration to Pierce County through 2040, driven by relative affordability compared to King County.

    The Operator Playbook

    For CRE operators looking at Tacoma, the playbook is straightforward: acquire Class B or C office assets in the CBD or Stadium District at current basis ($150-$250 PSF), evaluate adaptive reuse feasibility (the City’s permitting team is responsive and experienced with conversions), and target the residential/mixed-use end state that the market actually demands.

    The risk is low relative to Seattle. You’re not buying at a $400+ PSF basis hoping that tech workers return to offices. You’re buying at a basis that works even if the property stays partially office — and becomes highly profitable if you convert to the higher-demand use.

    Tacoma isn’t Seattle’s cheaper alternative. It’s a market with better fundamentals, lower basis, diversified demand, and a local government that actively supports adaptive reuse. The 18.5% vs 35.6% vacancy spread is the headline, but the real story is what it tells you about where the smart money should deploy next.

    FAQ

    What is Tacoma’s current CBD office vacancy rate compared to Seattle?

    Tacoma’s central business district office vacancy sits at approximately 18.5%, while Seattle’s downtown vacancy exceeds 35%. This spread reflects structural differences in tenant composition rather than a temporary market fluctuation.

    What incentives does Tacoma offer for adaptive reuse projects?

    The City of Tacoma offers the Multi-Family Tax Exemption (MFTE) program providing 8-12 year property tax exemptions for qualifying residential projects in designated areas, streamlined permitting for office-to-residential conversions, and an experienced planning department that actively supports adaptive reuse development.

    What does Class B office space cost in Tacoma versus Seattle?

    Class B office space in Tacoma’s CBD trades at approximately $150-$250 per square foot, which is 40-60% below comparable Seattle CBD product. Lease rates in Tacoma run $22-$32 per square foot full-service versus $38-$55+ in Seattle’s core.

    Why is Tacoma’s vacancy rate more stable than Seattle’s?

    Tacoma’s tenant base is diversified across government agencies, healthcare systems, law firms, and military-adjacent professional services — sectors that require in-person operations and aren’t adopting full remote work. This creates a natural demand floor that Seattle’s tech-dependent market lacks.

    What types of adaptive reuse projects work best in Tacoma’s market?

    Office-to-residential conversions and mixed-use projects (ground floor retail, upper floors residential or creative office) show the strongest economics. The low acquisition basis ($150-$250 PSF) combined with conversion costs of $80-$150 PSF produces viable total project costs in a market with genuine housing demand.

  • BNSF/NS Joint Service Cuts 3 Days Off Tacoma-to-Chicago Transit: What It Means for Local Shippers

    BNSF/NS Joint Service Cuts 3 Days Off Tacoma-to-Chicago Transit: What It Means for Local Shippers

    If you ship anything through the Pacific Northwest, the math just changed. The BNSF and Norfolk Southern joint intermodal service connecting the Northwest Seaport Alliance terminal in Tacoma to Chicago now cuts three days off transit compared to legacy routing. For Tacoma-based shippers, manufacturers, and third-party logistics operators, this isn’t a press release — it’s a structural cost reduction that changes where goods move and why.

    What the Joint Service Actually Does

    The Northwest Seaport Alliance (NWSA), which operates the marine cargo facilities across Tacoma and Seattle, has long positioned the gateway as a faster alternative to the congested ports of Los Angeles and Long Beach. The BNSF/NS intermodal partnership makes that positioning concrete: containers arriving at the Husky Terminal or Washington United Terminal in Tacoma can now reach Chicago in approximately four days, versus the seven-day benchmark that trucking-heavy or single-carrier rail options historically delivered.

    This works because BNSF handles the western leg from Tacoma through its mainline over Stevens Pass and across the northern tier, then hands off to Norfolk Southern’s eastern network at interchange points. The result is a seamless intermodal move that doesn’t require repositioning or drayage between disconnected terminals.

    Why Three Days Matters More Than You Think

    Three days isn’t just about speed — it’s about inventory carrying cost, warehouse utilization, and contractual delivery windows. For a mid-size Tacoma distributor shipping 200 containers per year to Midwest distribution centers, three days off transit means:

    Reduced safety stock requirements at the destination DC. When transit is predictable and shorter, you don’t need to warehouse as much buffer inventory. For goods with a landed cost of $50,000 per container, that’s real working capital freed up across the supply chain.

    Tighter compliance with retailer delivery windows. Major retailers penalize late deliveries with chargebacks that can run 3-5% of invoice value. Faster, more reliable transit directly reduces chargeback exposure.

    According to Port of Tacoma data, the NWSA handled approximately 3.5 million TEUs in 2023. Even a fractional shift in modal choice driven by this service improvement represents significant volume.

    The Tacoma Advantage Over LA/Long Beach

    The Southern California ports have dealt with chronic congestion, labor disputes, and drayage bottlenecks for years. Tacoma offers a fundamentally different operating environment: shorter vessel transit from major Asian manufacturing hubs (one to two days less sailing time from key ports in Japan, South Korea, and northern China), less terminal congestion, and direct on-dock rail access at multiple NWSA terminals.

    The BNSF/NS joint service amplifies this. A shipper routing through Tacoma instead of LA/LB to reach Chicago now saves time on the water AND time on the rail. The total door-to-door differential can be five or more days depending on origin port and final destination.

    Who Benefits in Tacoma

    The immediate beneficiaries are the freight forwarders, NVOCCs, and 3PLs already operating in the Tacoma logistics corridor along the Tideflats. Companies with warehouse operations near the Port of Tacoma terminals — particularly along Port of Tacoma Road, Taylor Way, and the industrial zones east of I-5 — gain the most from reduced dwell times and faster container turns.

    But the secondary effects matter too. Faster rail service makes Tacoma more attractive for distribution center siting decisions. Companies evaluating where to place Pacific Northwest DCs now have a stronger reason to choose Pierce County over alternative locations that lack direct intermodal rail access.

    The Pierce County Economic Development department has been marketing the logistics corridor as a competitive alternative to King County’s increasingly expensive industrial real estate. This rail improvement gives them a tangible differentiator.

    Infrastructure Context

    This service improvement doesn’t exist in a vacuum. BNSF has invested heavily in capacity improvements along its northern transcontinental mainline, including siding extensions and signal upgrades that improve fluidity for intermodal trains. Norfolk Southern’s eastern network investments in the Heartland Corridor and other capacity projects mean the Chicago interchange works without creating new bottlenecks.

    Locally, the NWSA’s ongoing terminal modernization — including the T-5 improvements in Seattle and continued investment in Tacoma’s Husky Terminal — ensures that vessel-to-rail transitions happen efficiently. The NWSA capital investment program has committed hundreds of millions to exactly these kinds of intermodal connection improvements.

    What Operators Should Do Now

    If you’re a Tacoma-based shipper currently routing through LA/LB to reach Midwest or East Coast markets, run the numbers on rerouting through the NWSA gateway with the BNSF/NS joint service. The per-container savings on transit time, reduced inventory carrying cost, and improved delivery reliability may justify shifting volume — even if the ocean freight rate differential isn’t immediately favorable.

    For operators considering expanding or relocating distribution operations, the Pierce County logistics corridor now offers a combination of available industrial land (at prices well below King County), direct intermodal rail access, and faster transit times to the nation’s largest consumer markets. That’s a combination you won’t find at LA/LB anymore.

    FAQ

    How much faster is the BNSF/NS joint service compared to previous options?

    The joint service cuts approximately three days off intermodal transit from Tacoma to Chicago, bringing the total to roughly four days compared to the previous seven-day benchmark for single-carrier or truck-heavy routing.

    Which terminals in Tacoma connect to this rail service?

    The Northwest Seaport Alliance operates multiple terminals in Tacoma with on-dock or near-dock rail access, including Husky Terminal and Washington United Terminals. Containers can move directly from vessel to intermodal rail without requiring extended drayage.

    Is this service available to all shippers or only large-volume accounts?

    The BNSF/NS intermodal service is available through freight forwarders and intermodal marketing companies (IMCs) that book capacity on the service. Both large-volume and smaller shippers can access it through their existing logistics providers.

    How does Tacoma’s rail transit compare to shipping through LA/Long Beach?

    Tacoma offers one to two days less ocean transit from key Asian ports, plus the faster rail service. Total door-to-door savings versus LA/LB routing to Chicago can be five or more days when combining shorter ocean transit with the improved rail schedule.

    What types of cargo benefit most from this service?

    Time-sensitive consumer goods, retail inventory subject to delivery window penalties, perishable goods requiring faster transit, and any cargo where inventory carrying costs are significant relative to freight spend. High-value electronics, apparel, and food products see the strongest ROI from faster rail service.

  • The Quiet Room Where the System Does Its Work

    The Quiet Room Where the System Does Its Work

    Most of what a working AI system does happens in silence. The operator sees the output. The operator does not see the labor. The labor — the prompts that ran, the data that was queried, the small decisions made hundreds of times across a session, the loops that were entered and exited — happens in a quiet room the operator usually does not enter.

    There is a small but important practice in periodically going to the quiet room and watching the work happen.

    Why most operators don’t do this

    The quiet room is dull. The labor is repetitive. Watching the system work is much less satisfying than reviewing the system’s output. The dashboard is the highlight reel; the quiet room is the practice. Most operators, given the choice, watch the highlight reel.

    This is reasonable in the short term. It is dangerous in the long term. The operator who only ever sees the output develops an intuition for the output and no intuition for the labor. When the output is wrong, the operator who has been watching the labor knows which step to look at. The operator who has been watching only the output is stuck.

    What the quiet room teaches

    It teaches the texture of the system’s reasoning. Where the system pauses. Where it overcommits. Which kinds of inputs produce which kinds of paths. What looks like efficiency is actually default behavior versus actual judgment.

    It teaches what the system does badly. Every working system has a set of small recurring inefficiencies — wasted lookups, redundant verifications, paths that loop slightly more than necessary. Most of these are invisible from the output. They are visible from the labor. Watching them gives the operator a real sense of what to optimize and what to leave alone.

    It teaches when to trust. The operator who has spent time in the quiet room has a calibrated sense of where the system is reliable and where it is reaching beyond its competence. That calibration is not in the output. It is only in watching the work.

    The practice

    The practice is small. Once a week, instead of reviewing only the output, spend twenty minutes in the labor. Read the trace of a session that produced something. Watch the prompts the system used, the tools it called, the decisions it made about which path to take. Note where the labor surprised you — positively or negatively. Update the working model.

    This is unglamorous. It does not produce anything. It does not show up in the dashboard. It is a deposit in an account the operator will draw on six months from now when something does not look right and the operator has to decide whether to trust the system’s read.

    The closing read

    The output is the public face of the system. The quiet room is where the system is actually built. The operator who knows only the public face will, eventually, be surprised by the system. The operator who has been to the quiet room periodically — even briefly, even unsystematically — will not be. That is most of what calibration is. There is no shortcut for the labor of watching the labor.

  • AI Loves This Site. Humans Don’t Stick Around. The Retention Leak, in Public.

    AI Loves This Site. Humans Don’t Stick Around. The Retention Leak, in Public.

    📡 Radar Update: Claude 4.6 Sonnet

    Field Intel (2026-05-30): Our social listening desks have detected a massive shift in developer sentiment regarding Claude’s context capabilities.

    • 📈 The Upgrade: Developers on r/ClaudeAI are reporting silent upgrades to the API’s output token ceiling, with contiguous code generations exceeding 6,000 lines without hallucination.
    • 💡 Why it matters: If Anthropic is actively tuning the output ceilings, relying on official documentation limits may underestimate what the model can actually handle in production right now.

    Part 3 of 3. Part 1 was the flex — AI assistants cite us and Claude.ai is our #4 traffic source. Part 2 was the playbook — each model cites completely different kinds of pages. Part 3 is the honest one. When I ran the same Claude-powered browser agent against our behavior and event data, the story flipped. The acquisition side of tygartmedia.com is working beautifully. The retention side barely exists. AI assistants like this site more than humans stick around for, and the data makes that painfully clear.

    I am publishing the whole leak in public because the fix is the interesting part.

    99.86% of our readers are brand new

    In 29 days, GA4 fired 1,405 first_visit events against 1,407 active users. That is a returning-visitor rate of roughly 0.14%. A healthy media site runs at 25–40%. We are running at effectively zero. Put another way: every one of our ~1,400 monthly readers has to be re-acquired next month because there is no returning audience to compound on.

    That number is the single most important finding in this whole three-part series. Every story about our AI-referral win in Parts 1 and 2 sits on top of it. If Claude stopped citing us tomorrow, traffic would roughly halve inside 60 days — there is no cushion.

    Only 8.6% of visitors scroll to the bottom

    GA4 fires a scroll event at 90% page depth by default. Over 29 days, 121 users out of 1,407 fired one. That is 8.6%. The publishing benchmark sits at 25–35%. We are at roughly a quarter of that.

    There are two explanations and both are true at once. Some share of the traffic is crawlers and scrapers that do not scroll. And some share of real humans are landing on articles that are either too long for the intent they arrived with, or do not give them a reason to keep going past the first answer.

    Four form submissions. In 29 days. Across 1,400 readers.

    Event Count Users Events / User
    page_view 2,007 1,406 1.43
    session_start 1,652 1,406 1.18
    first_visit 1,405 1,405 1.00
    user_engagement 999 675 1.54
    scroll 192 121 1.59
    click 34 30 1.13
    form_start 15 5 3.00
    form_submit 4 4 1.00

    Four form submissions across 1,655 sessions. 0.24% conversion. Fifteen people started a form and eleven of them walked away, for a 73% abandonment rate on whatever form we have running. There is also no newsletter_signup event, no cta_click event, no outbound_click event, no video_play event, no file_download event. We are running a publication with effectively zero instrumentation of reader behavior beyond “did the page load.” That is the measurement vacuum, and it is on us to fix.

    Pages per session: 1.21

    1,655 sessions produced 2,007 page views. That works out to 1.21 pages per session. Healthy media sites run 1.8–3.0. Wikipedia runs 4+. We are effectively a single-page-entry site. Readers arrive for one article, read it or do not, and leave. Nobody is browsing our categories. Nobody is clicking a related-posts rail, because we do not really have one. The internal link graph between our Claude desk, our restoration B2B content, our Mason County hyperlocal, and our general-interest pieces is not moving anybody between them, and the data proves it.

    There is one exception worth sitting with. Homepage visitors ( / ) hit an average of 1.59 views per user — meaningfully higher than the site average. The homepage is doing its job. The article templates are not.

    Retention is essentially zero

    The GA4 retention cohort chart peaks at about 5% Day-1 retention and drops to effectively zero by Day 7. Out of every 100 readers today, 5 come back tomorrow and 0 come back next week. Healthy publications run 15–25% on Day 1 and 5–10% on Day 7. We are running at a quarter of that across the board.

    The fix here is not content. It is a capture mechanism. Right now we have no durable way to turn a claude.ai referral into a known email address. Every AI-cited reader is a one-night stand with the site. Four form submissions in a month is not a newsletter strategy, it is a rounding error.

    Real human audience: ~675, not 1,407

    GA4 fires user_engagement roughly every 10 seconds of active foreground time. In 29 days only 675 users out of 1,407 ever fired one. That means 52% of our “users” never stuck around long enough for GA4 to confirm they were actually looking at the page. That bucket is some mix of near-instant bounces, back-button users, and crawlers that do not fire the event.

    Flipping it the other direction: 48% of reported users is probably the cleanest “real human reader” estimate in the whole account. Call it ~675 real humans per month. That is the number to plan around, not the 1,407 that shows on the dashboard.

    The 404 problem is real, and worse for AI referrals

    Page not found – Tygart Media is our #7 most-viewed page title in 29 days at 37 pageviews. Some of that is the expected noise of a site that has been through at least one URL restructure — the -2 and -3 suffixed slugs in the data (/anthropic-founders-2, /anthropic-ipo-2, /history-of-anthropic-2) suggest a prior rewrite. But some of it is almost certainly AI assistants citing URLs that no longer resolve.

    That is the single worst trust loop to leave open. The LLM does not know the URL is broken. It will keep citing it. Every 404 from an AI referral is a reader who was told by Claude that we had the answer, clicked through, and got a broken page. Fixing the 37 should be the highest-ROI hour of SEO work on our calendar this week.

    Concentration risk: one page is carrying the site

    /claude-student-discount accounted for 84 of our 2,007 total pageviews in 29 days — roughly 4% of all views on a single URL, and almost 12% when you include everyone who landed on it through any source. It is also the single page cited by all three major LLMs (27 combined sessions from Claude, ChatGPT, and Perplexity). It is both our crown jewel and our single point of failure.

    If Anthropic changes their student policy, or a competitor sherlocks the page with a better answer, we lose a material share of total traffic overnight. The response is not to panic, it is to diversify. The structural template that makes that page cite-worthy — narrow topic, answer-first, scannable facts — is repeatable. We need three to five more pages shaped exactly like it.

    A real-time snapshot that says everything

    While the agent was running the reports, it pulled the real-time view. Two active users were on the site. One was reading /claude-code-vs-aider, a comparison piece. One was bouncing between /selling-into-general-contractors and /selling-into-property-managers, two B2B restoration pages. One landed on a 404. Three verticals, three intents, one broken link — our whole site compressed into thirty minutes.

    The short version

    We have built a site that AI models like more than humans stick around for. The acquisition side is working. The retention side barely exists. The AI-citation layer is the most interesting asset we have, and it is sitting on top of a reader experience that converts at approximately zero. Close that gap and this turns into a real publication. Leave it open and we are running a very sophisticated funnel that leaks at the bottom. Publishing this publicly is the accountability move — we will update these numbers in 60 days.

    The fix, as a list

    • Instrument the site properly. Add GA4 events for newsletter_signup, cta_click, outbound_click, and scroll depth at 25 / 50 / 75 / 100%. Mark at least one as a key event. Right now we are flying blind past page-load.
    • Redirect the 404s. Pull the 37 broken-page pageviews, map each to the closest live URL, and push 301s. This is the single highest-ROI hour of SEO work available this week, and it specifically repairs the AI-citation trust loop.
    • Install a visible capture mechanism on every article. Sticky footer subscribe, mid-article inline form, or both. Pick one default format and ship it across every Claude-desk post first. Without a capture, every AI referral stays a stranger forever.
    • Add a “Related Claude posts” rail to every Claude article. Pages-per-session of 1.21 means the rest of the content library might as well not exist to any given reader. The homepage is the only page on the site that moves people inward. Rebuild article templates to behave the same way.
    • Treat /claude-student-discount and /anthropic-console like crown jewels. Keep them ruthlessly updated. Add FAQ schema. Add explicit Q&A blocks. Keep them in the LLM answer set.
    • Diversify the AI-citation base. Ship three to five new pages in the exact structural template of /claude-student-discount. Narrow, answer-first, scannable. Kill the concentration risk.
    • Consolidate the Cowork cluster. Fifteen pages, near-zero engagement, near-zero AI citations. Collapse to two or three flagships and redirect the rest.
    • Audit the Managed Agents pricing title mismatch. 68 path views, 39 title views. Something is rendering or logging inconsistently and it is worth a ten-minute investigation.

    Frequently asked questions

    What is a healthy returning-visitor rate for a media site?

    Most established publications see 25–40% returning visitors. tygartmedia.com currently runs at roughly 0.14%, which is essentially zero. The gap is not content quality — it is the absence of a capture mechanism to turn first-time readers into known subscribers.

    What percentage of page views should scroll to the bottom?

    The GA4 default scroll event fires at 90% page depth. Healthy content sites see 25–35% of users reach that threshold. tygartmedia.com is at 8.6%, which means either pages are too long for the intent they are arriving with, or a significant share of the traffic is non-human.

    How do you separate real readers from bots in GA4?

    The cleanest in-account signal is the user_engagement event. GA4 only fires it after roughly ten seconds of focused foreground time on the page. Dividing engaged users by total users gives you a rough “real human reader” estimate. On tygartmedia.com that ratio is 48%, so the real monthly audience is closer to ~675 readers than the reported 1,407.

    Why do 404 pages matter more when AI assistants are citing you?

    Because the LLM cannot tell when a URL goes dead. Once Claude, ChatGPT, or Perplexity has indexed a citation URL, it will keep recommending that URL to readers even after the page is moved or deleted. Every 404 from an AI referral is a permanently broken trust loop until the URL is restored or redirected.

    Why does a single crown-jewel page create concentration risk?

    When one URL is responsible for a double-digit share of total traffic and is the only page cited across multiple AI models, any change in the underlying topic — a policy shift by the product being covered, a competitor publishing a better page — can erase that traffic in a single week. The mitigation is to build multiple pages in the same structural template so citation volume is spread across several URLs rather than concentrated in one.

    What comes next

    The browser agent that dug all of this out is the same one we are turning into a repeatable audit any publisher can run against their own GA4. Parts 1, 2, and 3 together are the first real case study of what that audit looks like. The acquisition playbook is now documented. The retention fix is the next sixty days of work. We will publish the follow-up numbers when the fixes have had a chance to work — or not.

    If you want the catch-up: Part 1 — the AI-referral loop and Part 2 — the per-model citation playbook.

  • Claude Routines Is a Frankenstein Product, and That’s Why It’s Working

    Claude Routines Is a Frankenstein Product, and That’s Why It’s Working

    Anthropic shipped one feature on April 14. Nine days in, the internet has already decided it’s five different things.


    On April 14, 2026, Anthropic quietly pushed a research preview called Routines into Claude Code. The framing from their launch post is almost boring: “A routine is a Claude Code automation you configure once — including a prompt, repo, and connectors — and then run on a schedule, from an API call, or in response to an event.”

    That’s it. That’s the whole pitch. You write instructions once, Anthropic runs them on their cloud, and your laptop can be closed at the bottom of a lake for all it matters.

    Nine days later, I pulled social reactions from the first week of real usage — developers, indie hackers, ad ops people, a Polymarket trader, a guy learning piano, a Japanese solo dev running it for a week, Hamel Husain grumbling about YAML. And the thing that jumped out wasn’t the feature. It was how wildly people disagreed about what Routines even is.

    Is it an n8n killer? A cron replacement? An enterprise procurement play? A way to avoid buying a Mac Mini? A vibes machine for autonomous trading bots? A broken MCP detector?

    Yes. All of those. At the same time. That’s the story.


    The five Routines

    Here’s what Routines looks like, depending on who’s holding it.

    To the production automation crowd, it’s a toy. Alex Vacca (@itsalexvacca) wrote the most viewed thread in the launch window — 28,000+ views, 283 replies — and it was a full-throated defense of n8n. His agency runs 13 workflows, 2,000+ executions per day, 41 nodes in one pipeline alone. Monthly n8n bill: $384. “The same workloads on Claude would cost $60K,” he wrote. “That’s why I’m not buying the ‘Claude killed n8n’ take. They’re not the same layer.”

    He’s right. If you’re firing thousands of deterministic executions a day through a visual graph with tight error handling, Routines at 5-to-25 runs per day on included tiers isn’t even in the conversation. You’ll eat your Extra Usage budget by noon Tuesday.

    To the indie hacker crowd, it’s liberation. Aman Kumar (@Amank1412) summed up the mood in two lines and a video: “Claude Routines automatically run at a schedule without keeping your laptop open. Those who spent $599 on a Mac Mini.” A Spanish developer (@anthonysurfermx) is moving his OpenClaw logic off Digital Ocean: “me quito 30 USD mensuales.” A Japanese developer (@KameAIHacks) reported back after a full week: nightly test runs, auto PR reviews, weekly dependency scans — “個人開発者のメンテナンス作業がほぼゼロになった.” Maintenance work as a solo dev dropped to nearly zero.

    These people aren’t trying to replace n8n. They’re trying to not-own a server. The unlock isn’t workflow power. It’s that you can delete a piece of infrastructure from your life.

    To the enterprise crowd, it’s a land grab. The sharpest observation came from @grapeot, writing in Chinese: “Claude Routines 每个是独立 API endpoint 带 bearer token,独立配额独立计价,配套 SSH 让 agent 跑在企业内网。它服务的是把 agent 写进采购合同的企业.” Translation: every routine is a separate API endpoint with its own auth token, its own quota, its own billing line, and SSH support for running agents inside corporate networks. This is Anthropic saying “put this in your procurement contract.” It’s not a consumer feature dressed up. It’s enterprise infrastructure wearing consumer clothes.

    To the crypto crowd, it’s a printing press. @regent0x_ shared a story about a Polymarket trader who connected Routines to price feeds via API trigger. Price moves 4%, Claude wakes up, analyzes news, checks sentiment, decides whether to alert or auto-execute. “Laptop hasn’t been open in a week… $23k profit last month… total costs: $5/mo webhook + $87 in API calls… net profit margin: 99.6%.” Asked what he did with the free time: “learning piano.”

    This is the quote that’s going to outlive the launch. Not because it’s representative — it absolutely isn’t — but because it’s the Platonic ideal of what cloud agents are supposed to feel like when they work. Research, reason, act, report. Go practice Chopin.

    To Hamel Husain, it’s just YAML. The machine learning veteran (@HamelHusain) tried Routines and walked away: “I found it to be far better to use GitHub Actions. I have more control with GHA, secret management, etc. Claude is really good at writing all the yaml and iterating until it works on its own too. Wild times that I’m saying I like GitHub Actions LOL.”

    If you already live in GHA, Routines isn’t offering you anything you don’t already have — except the novelty of a natural-language wrapper, which costs you control.


    The broken pieces nobody’s hiding

    A feature isn’t real until it breaks, and Routines is breaking in public. @ghuubear tried it on day 9 and reported his MCP connectors weren’t detected at all: “anthropic is shipping broken products.” @ahmetb couldn’t get GitHub PR-open triggers to fire: “not working at all.” Rich Baldry (@chooserich), who’s spent “countless hours with Codex Automations, Claude Routines, OpenClaw,” landed on a phrase that’s going to stick: “unreliable magic machines.”

    His follow-up is the real critique, and it’s the one Anthropic needs to answer: “building software with the new agentic coding tools for the same tasks is vastly more reliable.” In other words — use Claude to write a real cron job, not to be the cron job.

    That’s a serious challenge. When the alternative to your cloud agent is “use your cloud agent to write the non-agent version instead,” you’ve built a very fancy bootstrap.


    The pricing question nobody’s settled

    Pro gets 5 routine runs per day. Max ($100 and $200) gets 15. Team and Enterprise get 25. After that, overages bill against Extra Usage at standard API rates.

    The Japanese dev community did the cleanest math: “Proプランだと1日5回まで。個人開発なら十分だけど、3つ以上のRoutineを毎日回したい場合はMaxプランが必要.” Five runs a day is fine for one or two scheduled jobs. Want three or more running daily? Plan up.

    That’s the dividing line, and it tells you exactly who the feature is actually priced for. It is not priced for the n8n crowd. It’s priced for the solo dev with two or three background jobs, or the enterprise buyer who doesn’t look at the line item. The middle — the agency with a dozen automations but no enterprise contract — is the exact spot where Extra Usage starts to sting.

    My Routines counter reads 0/15. I also have $250 in Extra Usage sitting in my account. I can tell you exactly where that money would go if I got careless with triggers: nowhere good.


    What I actually think

    I run a WordPress content network, a Notion command center, a few GCP projects, and enough scheduled tasks in Cowork to keep my desktop busy. I asked myself the honest question before writing this: do I need Routines?

    Answer: not yet. My laptop stays on. My scheduled tasks fire. If one misses because my wifi blinked, I run it the next morning and nothing dies. I’m not a Polymarket trader. I’m not running a procurement contract. I’m not trying to delete a Mac Mini I never bought.

    But the gap in Cowork is real, and the community surfaced it without meaning to. Right now, scheduled tasks in Cowork run on your machine. Routines run in the cloud. Nothing connects them. If you tag a task critical in Cowork and your laptop is asleep, the task just doesn’t fire. The obvious product move — one I’d expect Anthropic to ship in the next two quarters — is a failover flag: “if this task can’t run locally, escalate to a routine.” That closes the loop. Until it exists, you have to pick a side.


    The Frankenstein is the feature

    Here’s the thing about products that mean five different things at once: usually that’s a sign of a broken launch. Wrong messaging, wrong audience, wrong pricing. “Nobody knows what it is.”

    Routines is the opposite. Every one of those five readings is correct. It IS a toy next to n8n. It IS liberation from a VPS. It IS an enterprise procurement play. It IS a crypto printing press, sometimes. It IS broken in specific places. The Frankenstein isn’t a bug in the positioning. It’s a feature of cloud-hosted agents actually arriving in more than one market at the same time.

    The indie dev and the enterprise buyer are holding the same product and seeing different things because they are different things, lit from different angles. That’s what a platform primitive looks like in its first week.

    The Mac Mini guys get it. The n8n operators get it too — they’re just looking at a different body part.

    As for me: I’m keeping my counter at 0/15 for now. But I’m watching, because the moment Anthropic ships that failover flag between Cowork and Routines, the conversation changes, and the Frankenstein grows another limb.

    Learning piano is probably a stretch.


    Sources: Introducing Routines in Claude Code (claude.com/blog, April 14, 2026); Claude Code Routines documentation (code.claude.com/docs/en/routines); social reactions pulled from X/Twitter, April 14–23, 2026. All quotes used with attribution to their original posters.

  • Claude Orchestrates, Gemini Executes: A Multi-CLI Production Run

    Claude Orchestrates, Gemini Executes: A Multi-CLI Production Run

    The Architecture of Delegation: Moving Beyond the Chat Interface

    I spent today wiring Claude Code to boss around the Gemini CLI, clearing a 1,256-post WordPress tagging backlog without a single hallucinated tag. If you operate an agency or manage technical strategy at any reasonable scale, you already know the fundamental truth about current AI tools: the chat interface is a massive bottleneck. Copying, pasting, and waiting for a typing animation isn’t a workflow; it’s theater. Real, scalable throughput requires system-to-system communication and architectural delegation.

    The goal for today wasn’t just to write a python script. The goal was to establish a functional hierarchy between two distinct AI systems operating locally on my machine. Claude Code, operating directly in my terminal, would act as the lead engineer and orchestrator. It would handle the logic, map out the API calls, write the Python bridges, and manage the error handling. Gemini, accessed via its official command-line interface, would act as the high-context, high-throughput worker.

    The setup was brutally simple but effective. I installed the Gemini CLI using a standard node package manager command (npm install -g @google/gemini-cli) and authenticated it with a Google One AI Ultra account. This gave my local environment direct, command-line access to Google’s most capable models without needing to manage raw API keys or custom curl requests. From there, Claude Code was instructed to shell out via bash, calling the gemini command non-interactively to pass massive data payloads for processing, and then ingesting the structured output back into the orchestration pipeline.

    It is an assembly line in the truest sense. Claude builds the machinery and defines the parameters; Gemini operates the heavy press, stamping out classifications at a volume that would break a standard chat context window.

    Quantifying the Backlog and the Taxonomy Threat

    Before you throw compute at a problem, you have to measure it accurately. I directed Claude to run a full audit of tygartmedia.com using the native WordPress REST API. The numbers came back clean, but the scale of the maintenance debt was daunting.

    • Total published posts: 2,529 individual pieces of content.
    • SEO infrastructure: RankMath confirmed healthy and active across the board.
    • Existing tag vocabulary: 931 distinct, strategically established tags.
    • The deficit: 1,256 posts sitting entirely untagged, orphaned from the site’s primary taxonomy.

    In the past, solving this was a lose-lose proposition. It was either a job for a junior employee spending three agonizing weeks in the wp-admin panel, or it was a job for a messy automated script that inevitably hallucinates a thousand new, slightly misspelled tags. When you let an LLM tag 1,256 posts without strict, physical constraints, you don’t get an organized site. You get “Marketing”, “marketing”, “digital-marketing”, and “Digital Marketing Strategy” added as four completely separate taxonomy terms, permanently bloating your wp_terms table and diluting your internal link equity.

    The constraint I set for this pipeline was absolute. The system had to read the 1,256 untagged posts, assign 5 to 8 highly relevant tags to each post, and only use tags from the exact 931-item vocabulary we already had. Zero deviation. Zero hallucination. If a perfect tag didn’t exist in the vocabulary, the system had to settle for the closest existing match rather than inventing a new one.

    The Pilot Test and the Strict JSON Constraint

    We started small to validate the pipeline. Claude pulled a pilot batch of 10 untagged posts from the WordPress API, along with the complete, raw list of 931 acceptable tags. It packaged this massive block of text into a single, dense prompt and fired it over to the Gemini CLI.

    The instruction was clear and unforgiving: read the text of the posts, evaluate them against the vocabulary, and return ONLY a valid JSON object. I did not want markdown formatting. I did not want a polite introductory sentence. I needed a raw JSON string mapping each specific post_id to an array of its assigned tag IDs.

    If you’ve spent any significant time wrestling with large language models, you know that asking for strict adherence to a vocabulary and strict, unformatted JSON output is exactly where things usually break down. Models inherently want to chat. They want to explain their reasoning. They want to invent a 932nd tag because it felt slightly more semantically accurate for a specific paragraph.

    Gemini didn’t flinch. It processed the prompt and returned a raw, perfectly formatted JSON string directly to the standard output. Claude parsed it in memory, validated the suggested tags against the local vocabulary list, and found a 100% match rate. Every single tag suggested by Gemini was real. There was no conversational filler, no missing structural brackets, and no invented taxonomy. Claude immediately took that JSON, formatted the correct POST requests, and pushed the updates back to WordPress via the REST API.

    Scaling Up: Hitting the Windows Bottlenecks

    With the pilot completely successful, it was time to scale. Processing 1,256 posts one by one is inefficient, both in terms of time and system calls. We grouped the remaining posts into chunks of 25. This meant Claude would need to loop through roughly 50 distinct batches. For each batch, it would dynamically construct the prompt with the 931 tags and the 25 new post payloads, call Gemini, parse the resulting JSON, and patch the WordPress database.

    That is where the friction started. Building a local orchestration pipeline means you are no longer just dealing with AI limitations; you are dealing with local OS limits. Windows had two specific, technical walls waiting for us.

    Failure 1: WinError 2 (File Not Found)
    The initial Python orchestration script used the standard subprocess.run(['gemini', '-p', prompt]) command to invoke the CLI. It failed almost immediately with a WinError 2. The issue? When npm installs global packages on a Windows machine, it doesn’t create a raw binary; it creates a .cmd wrapper. Python’s subprocess module doesn’t automatically resolve these wrappers unless you pass shell=True, which introduces a host of security and string parsing headaches. The clean, robust fix was forcing Claude to locate the executable and use the absolute, fully qualified path to gemini.cmd in the subprocess call. It’s a minor detail, but one that breaks entire automation pipelines if you don’t know what you’re looking at.

    Failure 2: “The command line is too long”
    Once the executable actually resolved, the script crashed again on the very first batch. Windows threw a fatal error: “The command line is too long.” Windows enforces a strict character limit on command-line arguments—roughly 8,191 characters depending on the exact environment. Our dynamically generated prompt, containing the full text of 25 blog posts and 931 taxonomy terms, hovered around 20KB. Trying to pass that payload via the standard -p argument flag was physically impossible for the operating system to handle.

    The solution was architectural. Instead of trying to cram the prompt into an argument, Claude rewrote the Python script to pipe the prompt directly into Gemini’s standard input (stdin). By restructuring the workflow to write the 20KB payload to a temporary text file on disk, and then piping it via a standard input redirect (gemini < prompt.txt), we bypassed the OS argument limit entirely. The data flowed, and the pipeline spun back up to full speed.

    The Verdict: The Orchestrator vs. The Worker

    Watching this script hum through 50 consecutive batches crystalized a specific, actionable opinion about the current state of local agentic workflows. You do not need one god-model to do everything; you need specialized roles operating within a hierarchy.

    Claude Code is unmatched as an orchestrator. It understands the local filesystem, it navigates REST API documentation with ease, it writes robust, defensive Python, and it can dynamically debug Windows-specific OS errors on the fly. But using Claude for the repetitive, high-volume, token-heavy classification of thousands of posts is an expensive and slow use of a strategic brain. It is the equivalent of having your lead architect nailing drywall.

    Gemini, operating locally via its CLI, proved to be the ultimate high-throughput worker. It absorbed the massive context window of 931 tags and 25 full articles simultaneously, over and over again, without degrading in quality. It maintained absolute discipline over the JSON output structure across 50 separate invocations. It didn’t need to understand how the WordPress API worked, and it didn’t need to know how to write Python. It only needed to process the classification task it was handed and get out of the way.

    When Gemini acts as the worker and Claude acts as the boss, you get the absolute best of both architectures. You get the system-level problem-solving and environmental awareness of Claude, combined with the raw, reliable, high-context processing power of Gemini.

    Tomorrow’s Takeaway

    If you operate an agency and have a massive backlog of unstructured data—whether it is untagged content, uncategorized financial transactions, or messy CRM records—stop trying to fix it manually inside a browser window. The chat interface is dead for real, scalable work.

    Tomorrow, install an agentic CLI like Claude Code. Give it access to a high-context execution model via a secondary CLI, like Gemini. Tell the orchestrator to write a local script that batches your data, hands the batches to the execution model, forces a strict, structured JSON return, and posts the results directly back to your database or CMS. Expect the script to break on local OS limits. Fix the pipes, use standard input instead of arguments for massive payloads, and let the machines clear the backlog while you focus on actual strategy.

  • Foreman and Crew: Why My Best Claude Work Actually Runs on Gemini

    Foreman and Crew: Why My Best Claude Work Actually Runs on Gemini

    The Economics of Cognitive Budget

    Every automated system has a cognitive budget. When you are building an AI agency or managing a large-scale content pipeline, that budget is measured in two ways: the literal dollar cost of API credits and the “judgment tokens” spent on complex reasoning. Claude, specifically the 3.x and 4.x Sonnet and Opus series, currently holds the crown for high-judgment work. It understands nuance, follows complex instructions, and writes with a cadence that feels human. But it is also a resource you have to husband carefully.

    The most expensive mistake an operator can make is burning Claude’s judgment tokens on labor that requires zero creativity. If a task involves a fixed vocabulary, a strict JSON schema, and a predictable input-output loop, you don’t need a poet; you need a foreman to watch a crew of laborers. In my current architecture, Claude is the Foreman—the one who decides the strategy and handles the edge cases—while Gemini serves as the Crew. This isn’t just about saving a few dollars on a Tuesday; it’s about architectural resilience and maximizing the throughput of your most capable models.

    Yesterday, I detailed the orchestration pattern that allows these two models to talk to each other. Today, I want to look at the raw numbers and the operational rationale behind why my best Claude work actually runs on Gemini hardware. When you stop treating LLMs as a single-vendor solution and start treating them as tiered compute, the math of your business changes overnight.

    The Tygart Media Benchmark: 1,000 Posts and 931 Tags

    To understand the “Foreman and Crew” model, we have to look at a concrete production environment. We recently moved over 1,000 legacy posts for Tygart Media through a full metadata audit. This wasn’t a “write a summary” task. This was a “categorize these posts using only these 931 specific tags” task. This is what we call a bounded subtask. The model cannot invent new tags. It cannot be “creative.” It must map unstructured text to a strictly defined vocabulary.

    Running this through Claude Opus or even Sonnet 3.5 is technically superior in terms of accuracy, but the cost-to-benefit ratio is skewed. Gemini, particularly when accessed through a Google One AI Premium subscription, allows for a “marginal zero” cost structure for high-volume, bounded tasks. We processed 50 batches, involving approximately 300,000 input tokens and 25,000 output tokens. Here is how that breaks down against the current market rates for Claude models:

    Model Tier Input (300K) Output (25K) Total Cost Estimated Annual (20 Clients)
    Claude Sonnet 3.5 ($3/$15) $0.90 $0.38 $1.28 $307.20
    Claude Opus ($15/$75) $4.50 $1.88 $6.38 $1,531.20
    Gemini (AI Ultra Subscription) $0.00* $0.00* $0.00 $0.00

    *Cost is covered by the existing $19.99/mo subscription already used for storage and workspace tools.

    A $6 saving in a single day is a rounding error. But scale that across 20 client sites on a monthly cadence, and you are looking at $1,500 a year in reclaimed margin. More importantly, you are preserving Claude’s rate limits for the tasks Gemini cannot do—like the actual synthesis of the articles or the high-level strategy decisions that Claude 3.5 handles with far more grace.

    Defining the Bounded Subtask

    The success of this model hinges on knowing where the Foreman ends and the Crew begins. You cannot simply ask Gemini to “write like Claude.” It won’t. Gemini’s prose style often leans toward the repetitive or the overly structured. However, Gemini excels at what I call Bounded Subtasks. These are tasks where the “walls” of the output are clearly defined.

    A bounded subtask has three characteristics:

    • Fixed Vocabulary: The model must choose from a provided list (like our 931-tag library) rather than generating new ideas.
    • Structural Rigidity: The output must be valid JSON or a specific markdown format. Gemini is exceptionally good at following “System Instructions” that demand valid code blocks.
    • Low Context Sensitivity: The task doesn’t require “remembering” what happened three articles ago. It only needs the text in front of it and the rules provided.

    By routing these specific “labor” tasks to Gemini, we ensure that zero hallucinations occur. When you give Gemini 931 tags and tell it “only use these,” its adherence to those boundaries is remarkably stable. In our Tygart Media run of 1,000 posts, we saw zero instances of the model inventing a tag that wasn’t in the provided schema. That is the “Crew” doing exactly what they were told, while the “Foreman” (Claude) is free to handle the complex orchestration logic in the background.

    The Marginal Zero: Subscription Arbitrage

    There is a psychological shift that happens when you move from “consumption-based billing” (API) to “subscription-based billing” (Google One). When you are paying by the token, every experiment feels like a withdrawal from a bank account. You hesitate to run a second pass. You skip the extra validation step to save $0.15.

    When you use Gemini through the AI Ultra subscription (routed through a local bridge or automated CLI), the marginal cost of the next 100,000 tokens is zero. This changes the way you build. You can afford to be “wasteful” with tokens to ensure quality. You can run three different prompts on the same text and have the Foreman (Claude) pick the best one. This “Subscription Arbitrage” is the secret weapon of the independent operator. You are already paying for the Google storage and the workspace; why not use the compute that comes bundled with it to handle your data processing?

    This doesn’t mean Gemini is “better” than Claude. It means Gemini is “cheaper labor” for the specific tasks where its performance is “good enough.” In engineering, “good enough” at zero marginal cost is almost always superior to “perfect” at a premium.

    Architectural Resilience and Multi-Vendor Strategy

    Beyond the cost, there is the matter of resilience. If your entire agency or software stack is built on a single LLM provider, you are not a business; you are a feature of that provider. Rate limits, outages, or sudden changes in model weights can break your pipeline in an afternoon.

    By splitting the workload between Claude (Foreman) and Gemini (Crew), you build a multi-vendor layer into your architecture by default. If Anthropic has a service disruption, the Crew can still process the tagging and the data—perhaps with a slightly more manual oversight—while you wait for the Foreman to come back online. If Google throttles your subscription, you can temporarily route the Crew’s work to Claude Sonnet.

    This decoupling is essential for systems thinkers. It allows you to swap out components without re-writing the entire logic of your application. Your “Foreman” logic stays the same; you just change which “Crew” you are sending the batches to. This is the difference between building a fragile script and building a durable system.

    What You Should Do Tomorrow

    If you are currently running a pipeline that relies solely on Claude, I am not suggesting you switch. I am suggesting you audit. Look at your logs and identify the tasks that don’t require Claude’s soul. Look for the tagging, the JSON formatting, the data extraction, and the basic categorization.

    Tomorrow, try this protocol:

    • Isolate one bounded task: Pick something with a fixed input and a predictable output.
    • Set up a Gemini bridge: Use the API or a subscription-linked CLI to route that specific task.
    • Keep Claude as the orchestrator: Let Claude handle the “why” and the “how,” but let Gemini handle the “what.”
    • Measure the token savings: Don’t just look at the dollars. Look at how many Claude rate-limit tokens you’ve reclaimed for higher-value work.

    The goal isn’t to use less AI; it’s to use the right AI for the right job. My best work runs on Gemini because it allows Claude to be the best version of itself. Stop hiring master carpenters to move boxes. Hire the crew, keep the foreman, and scale the system.