<?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: Hugo Valer</title>
    <description>The latest articles on DEV Community by Hugo Valer (@hugo_valer_79d0d94e00804b).</description>
    <link>https://dev.to/hugo_valer_79d0d94e00804b</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%2F2416269%2Fb24de9e5-7017-4e3c-bec3-1a1330309a29.jpg</url>
      <title>DEV Community: Hugo Valer</title>
      <link>https://dev.to/hugo_valer_79d0d94e00804b</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hugo_valer_79d0d94e00804b"/>
    <language>en</language>
    <item>
      <title>The Geometry Measures, the AI Teaches: Building an Art Studio Tutor with ADK, Vertex AI &amp; OpenCV</title>
      <dc:creator>Hugo Valer</dc:creator>
      <pubDate>Wed, 19 Aug 2026 06:34:55 +0000</pubDate>
      <link>https://dev.to/hugo_valer_79d0d94e00804b/the-geometry-measures-the-ai-teaches-building-an-art-studio-tutor-with-adk-vertex-ai-opencv-551m</link>
      <guid>https://dev.to/hugo_valer_79d0d94e00804b/the-geometry-measures-the-ai-teaches-building-an-art-studio-tutor-with-adk-vertex-ai-opencv-551m</guid>
      <description>&lt;h1&gt;
  
  
  The Geometry Measures, the AI Teaches: Building an Art Studio Tutor with ADK, Vertex AI &amp;amp; OpenCV
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;This project was created for the Devpost All Things Agentic Hackathon.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. The Origin: A 9-Year-Old Daughter's Perspective Notebook
&lt;/h2&gt;

&lt;p&gt;When my 9-year-old daughter began practicing drawing cubes and perspective boxes in her sketchbook, I noticed a universal paradox in remote art education:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Students can't see their own angular deviations&lt;/strong&gt; (a $4^\circ$ or $7^\circ$ misalignment to the horizon line makes a box look subtly "off" or deformed, but beginners don't know &lt;em&gt;why&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Generic LLMs hallucinate visual measurements&lt;/strong&gt;: If you ask a multi-modal LLM to critique a drawing, it often invents arbitrary numbers ("your angle is off by 15 degrees") without any spatial ground truth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To bridge this gap, I designed &lt;strong&gt;Atelier&lt;/strong&gt; around a single strict invariant:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;"The geometry measures, the AI teaches, the student grows." (ADR-001)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Atelier is an agentic AI studio master for remote art students that decouples deterministic geometric calculation (via OpenCV) from high-empathy pedagogical critique (via Gemini Flash on Vertex AI).&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Architecture: Deterministic Rigor Meets Pedagogical Empathy
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                                  ATELIER ARCHITECTURE
 ┌──────────────────────┐         ┌────────────────────────┐         ┌───────────────────────┐
 │   Atelier.Web        │         │   Gemma Router         │         │  OpenCV Geometry      │
 │   (Blazor / .NET 10) │ ──────&amp;gt; │   (Vertex AI 2B/9B)    │ ──────&amp;gt; │  - Deskew / Canny     │
 │   - Multimodal UX    │         │   - Exercise Classify  │         │  - RANSAC VPs (k=1,2) │
 │   - Annotated Overlay│         │   - Pre-Gemini Tuning  │         │  - Horizon Line (LH)  │
 └──────────────────────┘         └────────────────────────┘         │  - Error in Degrees   │
            │                                                        └───────────────────────┘
            │                                                                    │
            ▼                                                                    ▼
 ┌──────────────────────┐         ┌────────────────────────┐         ┌───────────────────────┐
 │  Collaborative Loop  │ &amp;lt;────── │  Anti-Hallucination    │ &amp;lt;────── │  Gemini Flash Studio  │
 │  - ASK Clarification │         │  Validator (ADR-001)   │         │  (Google Vertex AI)   │
 │  - GUIDE Next Drill  │         │  - Verifies degrees    │         │  - Level-Aware Rubric │
 │  - CAPTURE Feedback  │         │  - Rejects fakes       │         │  - Two-Plane Critique │
 │  - ADAPT Profile     │         └────────────────────────┘         └───────────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  The Two-Plane Critique Model
&lt;/h3&gt;

&lt;p&gt;Atelier divides every critique into two distinct, validated planes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Plane A (Measured Findings)&lt;/strong&gt;: 100% strictly derived from OpenCV metrics. It reports exact vanishing points ($VP$ or $F_1, F_2$), horizon line tilt, and per-line angular deviation in degrees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plane B (Studio Observations)&lt;/strong&gt;: Qualitative criteria where the LLM evaluates the drawing like a human master instructor (line weight contrast between construction traces and definitive contours, spatial legibility, and cleanliness).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;An &lt;strong&gt;Anti-Hallucination Validator&lt;/strong&gt; intercepts the critique. If the model mentions any numerical measurement not found in the OpenCV payload, the response is rejected and regenerated with corrective feedback.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. The 4 Verbs of "The Collaborative Partner"
&lt;/h2&gt;

&lt;p&gt;Atelier is not a one-shot chatbot; it acts as a proactive studio partner orchestrating 4 collaborative verbs:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;ASK&lt;/strong&gt;: Before analyzing, Atelier asks the student: &lt;em&gt;"What were you practicing today? Which part felt hardest?"&lt;/em&gt; The answers calibrate the feedback depth.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GUIDE&lt;/strong&gt;: Instead of generic advice, Atelier prescribes specific follow-up drills targeted at the student's primary recurring deviation (e.g., &lt;em&gt;Targeted $F_1$ Convergence Drill&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;CAPTURE&lt;/strong&gt;: After every review, the student provides explicit feedback (&lt;code&gt;helpful: bool&lt;/code&gt; + note). This is persisted as an immutable event in Google Cloud Firestore (ADR-005).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ADAPT&lt;/strong&gt;: Learning profiles are never edited manually. Atelier dynamically derives the student's &lt;code&gt;tone_preference&lt;/code&gt; (adapting from technical to encouraging if recent feedback indicates frustration) and tracks the convergence error reduction curve over time.&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  4. Asynchronous Pipeline &amp;amp; Cloud Run Deployment
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Async-first Ingestion&lt;/strong&gt;: Students or parents drop sketchbook photos into a private Google Cloud Storage bucket (&lt;code&gt;atelier-inbox/{studentId}/&lt;/code&gt;). Eventarc fires a CloudEvent to the Cloud Run agent service, executing geometry calculation and critique in the background.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weekly Digest&lt;/strong&gt;: Cloud Scheduler triggers weekly aggregations, calculating the error reduction percentage and prescribing a 3-day practice plan (Monday, Wednesday, Friday) for the upcoming week.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Hardening&lt;/strong&gt;: Deployed on Google Cloud Run with &lt;code&gt;.NET 10&lt;/code&gt; (using &lt;code&gt;KnownIPNetworks.Clear()&lt;/code&gt; for proxy header termination) and Python FastAPI microservices.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  5. What We Learned
&lt;/h2&gt;

&lt;p&gt;Building Atelier demonstrated that the future of agentic AI in technical disciplines (art, engineering, surgery, architecture) requires &lt;strong&gt;hybrid intelligence&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use computer vision for math, physics, and ground truth.&lt;/li&gt;
&lt;li&gt;Use generative LLMs for language, empathy, pedagogy, and inspiration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When these two forces combine, students of all ages can see their invisible mistakes and grow with confidence.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Built with Google Agent Development Kit (ADK), Vertex AI (Gemini Flash &amp;amp; Gemma), Google Cloud Run, Cloud Storage, Eventarc, Firestore, OpenCV, and .NET 10.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
