<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tom Landry</title>
    <description>The latest articles on DEV Community by Tom Landry (@tom_landry_df0650a21e3bb1).</description>
    <link>https://dev.to/tom_landry_df0650a21e3bb1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4143717%2Fe1787f57-34c3-4379-9a24-13392bc38b10.jpg</url>
      <title>DEV Community: Tom Landry</title>
      <link>https://dev.to/tom_landry_df0650a21e3bb1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tom_landry_df0650a21e3bb1"/>
    <language>en</language>
    <item>
      <title>Building for the Trades: Why I Created Easy Accurate and Dar AI 🛠️🤖</title>
      <dc:creator>Tom Landry</dc:creator>
      <pubDate>Sat, 26 Sep 2026 03:40:29 +0000</pubDate>
      <link>https://dev.to/tom_landry_df0650a21e3bb1/building-for-the-trades-why-i-created-easy-accurate-and-dar-ai-5cn8</link>
      <guid>https://dev.to/tom_landry_df0650a21e3bb1/building-for-the-trades-why-i-created-easy-accurate-and-dar-ai-5cn8</guid>
      <description>&lt;p&gt;TL;DR: I’m Tom Landry—a 36-year trade veteran turned software developer. I built EasyAccurate.com and Dar AI to solve a problem that has plagued field contractors for decades: inaccurate job estimates, complex pricing models, and software built by people who have never spent a day on a job site. Here is how I’m bridging field experience with full-stack engineering, complete with code snippets, architecture breakdowns, and future goals.  &lt;/p&gt;

&lt;p&gt;🛠️ From the Job Site to the TerminalI didn't start my career sitting in front of an IDE. I spent 36 years in the trades—handling real work, dealing with real clients, and wrestling with real operational headaches.   For years, software sold to contractors fell into two flawed categories:Overly bloated enterprise platforms requiring a degree in database administration just to send a basic proposal.  &lt;/p&gt;

&lt;p&gt;Generic calculators that completely ignore field variables, localized labor rates, material supply chain fluctuations, and trade-specific margins.   &lt;/p&gt;

&lt;p&gt;When you miscalculate a bid in the trades, it doesn't just mean a bug in a log file—it means working for free or losing a job to a lower bidder. I got tired of seeing independent contractors struggle with tools designed by tech execs who never touched a tape measure.&lt;/p&gt;

&lt;p&gt;So, I learned full-stack engineering and decided to build the platform I always needed.  &lt;/p&gt;

&lt;p&gt;💡 What is Easy Accurate? &lt;a href="https://easyaccurate.com/" rel="noopener noreferrer"&gt;EasyAccurate.com&lt;/a&gt; is built on a simple premise: trade-specific technology should be lightning-fast, dead-accurate, and accessible.   &lt;/p&gt;

&lt;p&gt;Rather than creating another generic SaaS dashboard, EasyAccurate operates as an integrated ecosystem for trade contractors across 14 supported fields (painters, plumbers, electricians, HVAC, roofers, concrete, drywall, etc.):  &lt;/p&gt;

&lt;p&gt;Trade-Engineered Estimators: Dynamic quote engines tuned to actual field variables, localized ZIP-code pricing matrices, and real-time vendor material costs.   Zero-Bloat Architecture: Fast-loading PHP backends paired with decoupled JavaScript/React frontends—built to work seamlessly on mobile devices in the field.   Integrated Business Hub: Combining website engines, structured JSON-LD schema SEO, automated customer proposals, and local lead routing into one unified ecosystem.  &lt;/p&gt;

&lt;p&gt;🤖 Enter Dar AI: &lt;br&gt;
&lt;a href="https://dev-to-uploads.s3.us-east-2.amazonaws.com/uploads/articles/xlr6lq46nefnlal4ogrr.png" rel="noopener noreferrer"&gt;Dar&lt;/a&gt; The Autonomous Field Estimator Estimating shouldn't require coming home after a 10-hour workday to spend three more hours crunching numbers. That’s why I created Dar AI—a standalone plugin and autonomous field-estimating assistant engineered explicitly for home service and commercial contractors.   Dar AI isn't just another wrapper around an LLM. It's a multi-agent workflow engineered to handle real field conditions:   &lt;/p&gt;

&lt;p&gt;Contextual Measurement &amp;amp; Vision Processing: Takes job site photos, floor plans, and spatial measurements, processing them directly through vision-capable models.   Local Rate Adjustments: Automatically references real-time local supplier pricing tables and applies ZIP-code cost multipliers (classified into high-cost, standard, and low-cost regional indexes).   Autonomous Ticket Generation: Communicates with clients via interactive web chat or field hubs ([dar_field_hub]) to qualify job requirements, calculate square footage, generate detailed line-item scope-of-work tickets, and output print-ready PDF proposals instantly.  &lt;/p&gt;

&lt;p&gt;💻 Under the Hood: Code &amp;amp; ArchitectureUnder the hood, we run a hybrid setup built for modularity, low latency, and offline/mobile durability:   &lt;/p&gt;

&lt;p&gt;Core &amp;amp; Backend: PHP 7.4+ / WordPress REST API, Python (FastAPI), Google Cloud Run.   AI Engine &amp;amp; Workflows: Claude Managed Agents (claude-sonnet-4-6 or claude-opus-5) and Google Gemini (gemini-2.5-flash), with custom JSON-LD schema generators.   Security: AES-256-GCM encrypted API key storage using WordPress salts.   &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Claude Managed Agents Toolset PayloadWhen initializing a trade-specific agent turn, Dar builds an explicit toolset configuration to grant search, fetch, and file tools:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PHP/**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build the toolset payload expected by the Managed Agents API.&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/param"&gt;@param&lt;/a&gt; string $trade_slug&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@return array&lt;br&gt;
*/&lt;br&gt;
function dar_managed_agents_tools_payload( $trade_slug = '' ) {&lt;br&gt;
$configs = array();&lt;br&gt;
$enabled = dar_managed_agents_toolset( $trade_slug );&lt;br&gt;
$available_tools = array( 'bash', 'read', 'write', 'edit', 'glob', 'grep', 'web_fetch', 'web_search' );&lt;/p&gt;

&lt;p&gt;foreach ( $available_tools as $tool ) {&lt;br&gt;
    $configs[] = array(&lt;br&gt;
        'name'    =&amp;gt; $tool,&lt;br&gt;
        'enabled' =&amp;gt; in_array( $tool, $enabled, true ),&lt;br&gt;
    );&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;return array(&lt;br&gt;
    array(&lt;br&gt;
        'type'    =&amp;gt; 'agent_toolset_20260401',&lt;br&gt;
        'configs' =&amp;gt; $configs,&lt;br&gt;
    ),&lt;br&gt;
);&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Localized Professional Matching ContextWhen a user provides a 5-digit ZIP code during a chat session, Dar injects geocoded local contractors into the context window without inventing data:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PHP/**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contextual injection of local directory pros into agent turns.&lt;/li&gt;
&lt;li&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/param"&gt;@param&lt;/a&gt; string $text Raw message&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/param"&gt;@param&lt;/a&gt; string $trade_slug Active trade&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;@return string Prompt context addition&lt;br&gt;
*/&lt;br&gt;
function dar_managed_agents_professional_context( $text, $trade_slug ) {&lt;br&gt;
if ( ! preg_match( '/\b([0-9]{5})(?:-[0-9]{4})?\b/', $text, $match ) ) {&lt;br&gt;
    return "\n\nProfessional matching is enabled, but no 5-digit ZIP code was found. Ask for the ZIP code before recommending local professionals.\n";&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;$geo = dar_map_geocode( $match[1] );&lt;br&gt;
if ( is_wp_error( $geo ) ) {&lt;br&gt;
    return "\n\nProfessional matching could not locate ZIP {$match[1]}. Ask the customer to verify the ZIP.\n";&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;$pros = dar_map_search_pros( $geo['lat'], $geo['lon'], $trade_slug );&lt;br&gt;
if ( empty( $pros ) ) {&lt;br&gt;
    return "\n\nNo directory-listed {$trade_slug} professionals were found near ZIP {$match[1]}.\n";&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;$lines = array();&lt;br&gt;
foreach ( array_slice( $pros, 0, 5 ) as $pro ) {&lt;br&gt;
    $lines[] = '- ' . $pro['name'] . ' (' . $pro['miles'] . ' mi); phone: ' . $pro['phone'];&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;return "\n\nLOCAL PROFESSIONAL MATCHING CONTEXT (near ZIP {$match[1]}):\n" . implode( "\n", $lines ) . "\n";&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚀 Future Goals: What’s Next for Dar &amp;amp; Easy Accurate?We're just getting started. Here is what I’m currently engineering for the platform:  &lt;/p&gt;

&lt;p&gt;Multi-Agent Field Networks: Evolving Dar AI into a multi-agent state machine where independent agents handle specific operational tasks—one agent managing client intake, another running material takeoff calculations, and a third generating localized SEO landing pages for the contractor automatically.   &lt;/p&gt;

&lt;p&gt;Direct Supplier API Integrations: Expanding real-time API integrations with local trade suppliers so material pricing updates dynamically based on live distributor inventory.   &lt;/p&gt;

&lt;p&gt;Open Developer Ecosystem: Releasing modular plugins (like the ScopeQuote Estimator and Dar Field Hub) to allow developers to build specialized trade estimators for local business clients without re-inventing the backend logic.   &lt;/p&gt;

&lt;p&gt;Let’s Talk Tech &amp;amp; Trade Solutions&lt;/p&gt;

&lt;p&gt;I joined the Dev.to community to share technical breakdowns on building multi-agent AI systems, decoupling WordPress with API-first architectures, and solving real-world domain problems with code.   &lt;/p&gt;

&lt;p&gt;Are you building AI agents for specific real-world industries?   &lt;/p&gt;

&lt;p&gt;How are you handling localized real-time data fetching in your LLM workflows?   &lt;/p&gt;

&lt;p&gt;Drop a comment below or connect with me—I'd love to exchange ideas on modern web architectures, AI workflows, and bootstrapping product systems!   &lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
