<?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: nihsett</title>
    <description>The latest articles on DEV Community by nihsett (@nihsett).</description>
    <link>https://dev.to/nihsett</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%2F4102838%2F37a8b881-2e2f-46e3-b2a9-a1fb6b93782e.png</url>
      <title>DEV Community: nihsett</title>
      <link>https://dev.to/nihsett</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nihsett"/>
    <language>en</language>
    <item>
      <title>How I Built Tycho, an Autonomous Competitive-Intelligence Fleet</title>
      <dc:creator>nihsett</dc:creator>
      <pubDate>Mon, 31 Aug 2026 13:32:21 +0000</pubDate>
      <link>https://dev.to/nihsett/how-i-built-tycho-an-autonomous-competitive-intelligence-fleet-360n</link>
      <guid>https://dev.to/nihsett/how-i-built-tycho-an-autonomous-competitive-intelligence-fleet-360n</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;I created this article for the purposes of entering the &lt;a href="https://allthingsagentichackathon.devpost.com/" rel="noopener noreferrer"&gt;All Things Agentic Hackathon&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Competitive intelligence sounds simple: watch competitors and report what changed. In practice, useful signals are spread across release notes, product pages, pricing updates, and other sources. A team must check those sources repeatedly, separate meaningful changes from routine noise, and remember why it reached each conclusion.&lt;/p&gt;

&lt;p&gt;I built &lt;strong&gt;Tycho&lt;/strong&gt; to automate that work.&lt;/p&gt;

&lt;p&gt;Tycho is an autonomous agent fleet that watches competitors, maintains evidence-backed beliefs, and produces a weekly view of the market. Every belief can be traced to the source change that created it. If the evidence does not support a conclusion, Tycho does not publish one.&lt;/p&gt;

&lt;p&gt;For the hackathon, Tycho monitors four coding-agent products: Claude Code, OpenAI Codex, Gemini CLI, and Pi. Coding agents are the live test market, but the system is configured through YAML and is not tied to that industry.&lt;/p&gt;

&lt;h2&gt;
  
  
  The basic flow
&lt;/h2&gt;

&lt;p&gt;Tycho runs as a scheduled pipeline rather than a chatbot. No person has to start a conversation or provide a research prompt.&lt;/p&gt;

&lt;p&gt;The flow has four stages:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Watch and record source changes&lt;/li&gt;
&lt;li&gt;Interpret what changed&lt;/li&gt;
&lt;li&gt;Update versioned beliefs&lt;/li&gt;
&lt;li&gt;Build and challenge a weekly market brief&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftwj17e3zc6tlhclw1r20.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftwj17e3zc6tlhclw1r20.png" alt="Tycho system architecture" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Watch and record
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cloud Scheduler&lt;/strong&gt; starts a &lt;strong&gt;Cloud Run&lt;/strong&gt; acquisition job every night. The job reads each product's GitHub releases and official changelog.&lt;/p&gt;

&lt;p&gt;The complete fetched payload is written once to &lt;strong&gt;Cloud Storage&lt;/strong&gt;. An immutable Observation is also appended to &lt;strong&gt;BigQuery&lt;/strong&gt; with its source, timestamp, status, content hash, and storage reference.&lt;/p&gt;

&lt;p&gt;Before doing anything expensive, Tycho compares the new content hash with the previous Observation. If nothing changed, processing stops. This avoids unnecessary model calls and keeps unchanged checks visible in the audit history.&lt;/p&gt;

&lt;p&gt;Fetched text is treated as untrusted data. A deterministic filter catches known prompt-injection patterns, and a &lt;strong&gt;Gemma 4&lt;/strong&gt; classifier screens for subtler instructions before the content reaches another agent.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Interpret the change
&lt;/h2&gt;

&lt;p&gt;When a source changes, &lt;strong&gt;Gemini 3.7 Flash on Vertex AI&lt;/strong&gt; receives one bounded before-and-after pair. It has no tools and must return structured JSON.&lt;/p&gt;

&lt;p&gt;Gemini describes each meaningful change and provides exact quotes from the source. Python then checks the result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does every quote occur in the correct source snapshot?&lt;/li&gt;
&lt;li&gt;Do the Observation IDs and entity match?&lt;/li&gt;
&lt;li&gt;Is the change about the monitored product?&lt;/li&gt;
&lt;li&gt;Are the categories, confidence values, and lengths valid?&lt;/li&gt;
&lt;li&gt;Does the result obey the evidence policy?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only a response that passes every check becomes a canonical Delta in BigQuery. Valid noise is retained for audit, but only meaningful Deltas continue through &lt;strong&gt;Pub/Sub&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The model interprets the text. Code decides whether the system may trust that interpretation.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Maintain versioned beliefs
&lt;/h2&gt;

&lt;p&gt;Meaningful Deltas are delivered to the managed &lt;strong&gt;Tycho Analyst Agent Runtime&lt;/strong&gt;. The Analyst is built with &lt;strong&gt;Google ADK&lt;/strong&gt; and can act through only five tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a claim&lt;/li&gt;
&lt;li&gt;Supersede a claim&lt;/li&gt;
&lt;li&gt;Adjust confidence&lt;/li&gt;
&lt;li&gt;Reverify an existing claim&lt;/li&gt;
&lt;li&gt;Take no action&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Those tools enforce the lifecycle rules in Python. The model cannot write directly to Firestore, BigQuery, or Cloud Storage.&lt;/p&gt;

&lt;p&gt;Claims are stored in &lt;strong&gt;Firestore&lt;/strong&gt; as versioned beliefs. A correction does not silently replace old text. Tycho publishes a new version and preserves the supersession history, evidence references, and timestamps.&lt;/p&gt;

&lt;p&gt;Firestore is the authoritative memory because this workflow needs exact versions, transactions, and durable leases. It is not conversational memory. The agents share a governed claim ledger.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Build and challenge the weekly brief
&lt;/h2&gt;

&lt;p&gt;A second Cloud Scheduler job starts the &lt;strong&gt;Tycho Strategy Council&lt;/strong&gt; once a week. It runs in a separate managed Agent Runtime with its own service account and Agent Identity.&lt;/p&gt;

&lt;p&gt;The Council uses three Google ADK agents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Strategist&lt;/strong&gt; proposes market conclusions from exact claim versions.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Challenger&lt;/strong&gt; looks for weaknesses using the same evidence.&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;Brief Writer&lt;/strong&gt; renders only conclusions that survived both code checks and challenge.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Python runs between every agent. A conclusion must use multiple entities and independent source families. Two pages controlled by the same vendor do not automatically count as two independent witnesses. The Council cannot browse the web, fetch raw snapshots, or modify claims.&lt;/p&gt;

&lt;p&gt;The final brief cites exact claim versions, so each line can be traced back through a canonical Delta to its source Observations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Managed agents and Google Cloud
&lt;/h2&gt;

&lt;p&gt;Tycho uses two isolated managed Agent Runtimes: one for the Analyst and one for the Strategy Council. Both are cataloged in &lt;strong&gt;Agent Registry&lt;/strong&gt; and run under separate managed &lt;strong&gt;Agent Identities&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The deployed stack includes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google ADK&lt;/li&gt;
&lt;li&gt;Gemini and Gemma on Vertex AI&lt;/li&gt;
&lt;li&gt;Agent Runtime, Agent Registry, and Agent Identity&lt;/li&gt;
&lt;li&gt;Cloud Run and Cloud Scheduler&lt;/li&gt;
&lt;li&gt;BigQuery and Cloud Storage&lt;/li&gt;
&lt;li&gt;Firestore and Pub/Sub&lt;/li&gt;
&lt;li&gt;Cloud Build and Artifact Registry&lt;/li&gt;
&lt;li&gt;Cloud Trace and OpenTelemetry&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The public dashboard has a separate read-only identity. It can read governed results but cannot write claims or Deltas, publish messages, or read raw Cloud Storage payloads.&lt;/p&gt;

&lt;p&gt;OpenTelemetry records workflow structure, timing, model names, and token usage. Prompts, model responses, claim text, and source quotes are removed before traces are exported.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running in production
&lt;/h2&gt;

&lt;p&gt;Tycho is deployed on Google Cloud against real public data. At submission time it had produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;132 immutable Observations&lt;/li&gt;
&lt;li&gt;79 canonical Deltas&lt;/li&gt;
&lt;li&gt;23 active evidenced claims&lt;/li&gt;
&lt;li&gt;Four monitored competitors across eight official sources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The latest scheduled weekly run pinned all 23 active claim versions and evaluated a proposed market conclusion. The evidence did not satisfy the cross-entity rules, so Tycho published an empty brief instead of turning a weak pattern into a confident answer.&lt;/p&gt;

&lt;p&gt;Repeating the same weekly period returned the completed session through a Firestore lease. It did not make a second Gemini call.&lt;/p&gt;

&lt;p&gt;The repository includes 488 backend tests, 68 frontend tests, 14 live production checks, and green GitHub Actions CI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Tycho
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tycho-dashboard-u2s544lf5a-uc.a.run.app" rel="noopener noreferrer"&gt;Live Intelligence Dashboard&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/nihsett/tycho" rel="noopener noreferrer"&gt;Public GitHub repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://allthingsagentichackathon.devpost.com/" rel="noopener noreferrer"&gt;All Things Agentic Hackathon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Tycho's core rule is simple: &lt;strong&gt;accumulate facts, revise beliefs, and preserve the evidence between them.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>googlecloud</category>
      <category>agents</category>
    </item>
  </channel>
</rss>
