<?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>Forem: Jorge Eduardo Vazquez Trujillo</title>
    <description>The latest articles on Forem by Jorge Eduardo Vazquez Trujillo (@jorgevazt).</description>
    <link>https://forem.com/jorgevazt</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3840598%2Fd9f022ad-80fd-47e3-916e-1a1ddfef686c.png</url>
      <title>Forem: Jorge Eduardo Vazquez Trujillo</title>
      <link>https://forem.com/jorgevazt</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/jorgevazt"/>
    <language>en</language>
    <item>
      <title>From Product Backlog to Production: My Journey through the DataArt Agentic Development Hackathon</title>
      <dc:creator>Jorge Eduardo Vazquez Trujillo</dc:creator>
      <pubDate>Tue, 21 Apr 2026 16:55:53 +0000</pubDate>
      <link>https://forem.com/jorgevazt/from-product-backlog-to-production-my-journey-through-the-dataart-agentic-development-hackathon-51kl</link>
      <guid>https://forem.com/jorgevazt/from-product-backlog-to-production-my-journey-through-the-dataart-agentic-development-hackathon-51kl</guid>
      <description>&lt;h2&gt;
  
  
  The "Product Manager" in the Machine
&lt;/h2&gt;

&lt;p&gt;As a Product Manager, my day-to-day usually involves roadmap alignment, user interviews, and prioritization. However, in my "off-hours," I’ve become obsessed with the potential of &lt;strong&gt;Agentic Development&lt;/strong&gt;. I’ve spent months building small functional solutions for my own workflow and helping colleagues automate their business processes.&lt;/p&gt;

&lt;p&gt;When the &lt;strong&gt;DataArt Agentic Development Hackathon&lt;/strong&gt; was announced, I saw it as the ultimate test. Could I take my hobbyist experimentation and apply it to a high-stakes, time-sensitive competitive environment? &lt;/p&gt;

&lt;p&gt;The answer lay not in how well I could code, but in how well I could &lt;em&gt;orchestrate&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Vision: A Modern "El Chat"
&lt;/h2&gt;

&lt;p&gt;The prompt for the hackathon was clear: &lt;strong&gt;Create a functional chat server.&lt;/strong&gt; Immediately, my mind went back to the early days of the internet—specifically to a site called &lt;em&gt;elchat.com&lt;/em&gt;. For many of us in Latin America, it was a "rusty" but beloved digital plaza where you could connect with anyone, anywhere. &lt;/p&gt;

&lt;p&gt;My goal wasn't just to build a server; it was to build a modern, agent-driven version of that nostalgic experience. But as a PM, I didn't reach for a compiler first. I reached for my &lt;strong&gt;User Stories&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 1: Hiring my "Senior Business Analyst" (Gemini)
&lt;/h2&gt;

&lt;p&gt;To succeed in a 48-hour sprint—especially while living in Central Time and balancing a different schedule than my international peers—I needed a solid foundation. &lt;/p&gt;

&lt;p&gt;I started by crafting a highly specific &lt;strong&gt;Profile Prompt&lt;/strong&gt; for Gemini. I didn't just ask it for ideas; I commanded it to act as a &lt;strong&gt;Senior Business Analyst&lt;/strong&gt;. We entered an intensive back-and-forth dialogue:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Refining the core features.&lt;/li&gt;
&lt;li&gt;Identifying potential edge cases.&lt;/li&gt;
&lt;li&gt;Breaking down the roadmap into a lean, 2-day "hackathon" sprint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By the end of the session, I had a professional-grade Product Backlog. I knew exactly what the agents needed to build before a single line of code was generated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 2: Spec Driven Development (SDD)
&lt;/h2&gt;

&lt;p&gt;Once I opened VSCode, I committed to a &lt;strong&gt;Spec Driven Development&lt;/strong&gt; approach. &lt;/p&gt;

&lt;p&gt;For a Product-oriented person, SDD is a game changer. It shifts the focus from the "boring" mechanics of writing syntax to the high-level strategy of defining requirements. It felt like I was managing a development team that never slept. I provided the specs; the AI provided the delivery. This allowed me to stay focused on &lt;strong&gt;prioritization&lt;/strong&gt;—ensuring that the most critical features were built first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Phase 3: Building the "Agentic Squad"
&lt;/h2&gt;

&lt;p&gt;One of the most exciting parts of this hackathon was the requirement for &lt;strong&gt;Dockerization&lt;/strong&gt;. Every solution had to be packaged in a Docker container with zero external dependencies. This meant the architecture had to be tight, portable, and self-contained.&lt;/p&gt;

&lt;p&gt;To manage this, I didn't just use one AI. I built a squad:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;The Developer Agent:&lt;/strong&gt; Handled the core logic and feature implementation.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Backend Tester:&lt;/strong&gt; A specialized agent focused on API reliability and server-side stability.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;The Frontend Tester:&lt;/strong&gt; Ensuring the UI was responsive and user-friendly.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  The "Frustrating" Reality of Agentic Work
&lt;/h3&gt;

&lt;p&gt;I’ll be honest: there were moments of deep frustration. Even though I’m not a professional developer, I had a burning urge to get in there and manually "touch the code." &lt;/p&gt;

&lt;p&gt;However, the "Agentic" philosophy requires a different kind of discipline. I realized that my value wasn't in fixing a typo in a CSS file; my value was in &lt;strong&gt;refining the prompt, adjusting the spec, and ensuring the testers were catching the right bugs.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Takeaway: The Human in the Loop
&lt;/h2&gt;

&lt;p&gt;At the end of the hackathon, I walked away with a functional, containerized chat server and a profound realization.&lt;/p&gt;

&lt;p&gt;Even when AI takes over 90% of the development work, the &lt;strong&gt;10% that remains—the decision-making, the strategy, and the vision—is more critical than ever.&lt;/strong&gt; An AI can write a function, but it cannot decide &lt;em&gt;why&lt;/em&gt; that function matters to the user. All the decisions behind the code must come from a human with the experience to know what "good" looks like.&lt;/p&gt;

&lt;p&gt;Final Credits&lt;br&gt;
A huge thank you to &lt;strong&gt;DataArt&lt;/strong&gt; for the opportunity to push the boundaries of what "development" means in 2024. To my fellow participants: thumbs up for the incredible work and the shared late nights.&lt;/p&gt;

&lt;h3&gt;
  
  
  🔗 Explore the Project
&lt;/h3&gt;

&lt;p&gt;Curious about how it turned out? You can find the full repository, including the Docker setup and the agent-generated logic, right here:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/jorgevaztdev/ChatServer" rel="noopener noreferrer"&gt;https://github.com/jorgevaztdev/ChatServer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>agenticai</category>
      <category>ai</category>
      <category>programming</category>
      <category>hackathon</category>
    </item>
    <item>
      <title>Building Rutiq: Orchestrating the Last Mile with FastAPI, Supabase, Telegram, and Applied AI</title>
      <dc:creator>Jorge Eduardo Vazquez Trujillo</dc:creator>
      <pubDate>Sat, 18 Apr 2026 03:49:36 +0000</pubDate>
      <link>https://forem.com/jorgevazt/building-rutiq-orchestrating-the-last-mile-with-fastapi-supabase-telegram-and-applied-ai-4ahm</link>
      <guid>https://forem.com/jorgevazt/building-rutiq-orchestrating-the-last-mile-with-fastapi-supabase-telegram-and-applied-ai-4ahm</guid>
      <description>&lt;p&gt;Last-mile logistics is often a silent chaos. If you look closely at the operations of many retail or shipping companies, you'll see a reality built on "trench tech": copy-pasted Excel sheets, WhatsApp groups saturated with voice notes, delivery photos lost in chat histories, and zero real-time traceability.&lt;/p&gt;

&lt;p&gt;The "before" of a standard operation involves low visibility, constant friction between dispatchers and couriers, and a very high margin of error. To solve this, &lt;strong&gt;Rutiq&lt;/strong&gt; was born—a last-mile operations platform designed to connect operators (shippers and admins), stores, and couriers in real-time.&lt;/p&gt;

&lt;p&gt;More than just a dashboard, Rutiq was built as an exercise in &lt;strong&gt;applied AI engineering for real-world logistical operations&lt;/strong&gt;. The thesis here isn't to "just add a chatbot," but to use automation and Large Language Models (LLMs) strictly where they reduce friction, minimize errors, and shorten response times within an auditable workflow.&lt;/p&gt;

&lt;p&gt;Below, we break down the architecture, product decisions, and technical challenges behind this production-ready MVP.&lt;/p&gt;




&lt;h2&gt;
  
  
  🏗️ High-Level Stack and Architecture
&lt;/h2&gt;

&lt;p&gt;To build a fast, secure, and easy-to-iterate platform, we opted for a modern stack that clearly separates responsibilities:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Frontend (Admin &amp;amp; Shipper Portals):&lt;/strong&gt; Built with &lt;strong&gt;Next.js&lt;/strong&gt; (TypeScript) and deployed on &lt;strong&gt;Vercel&lt;/strong&gt; with continuous integration from GitHub. This gives us a typed, fast, and easily distributed frontend.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backend:&lt;/strong&gt; Developed in &lt;strong&gt;FastAPI&lt;/strong&gt;, leveraging its speed and native support for asynchronous programming. Persistence is handled via &lt;strong&gt;SQLAlchemy async&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database &amp;amp; Auth:&lt;/strong&gt; &lt;strong&gt;PostgreSQL&lt;/strong&gt; hosted on &lt;strong&gt;Supabase&lt;/strong&gt; (using its connection pooler and SSL). We leverage &lt;strong&gt;Supabase Auth&lt;/strong&gt; for issuing JWTs and &lt;strong&gt;Supabase Storage&lt;/strong&gt; for delivery evidence (photos), protected by &lt;em&gt;tenant&lt;/em&gt;-based RLS (Row Level Security) policies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Courier Interface:&lt;/strong&gt; An operational bot on &lt;strong&gt;Telegram&lt;/strong&gt; connected via &lt;em&gt;webhooks&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On-Premise Deployment (Optional):&lt;/strong&gt; The backend is containerized to run on &lt;strong&gt;Docker Compose&lt;/strong&gt;, using &lt;strong&gt;Cloudflare Tunnels&lt;/strong&gt; to expose webhooks securely without dealing with complex network configurations on proprietary servers.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🧠 Product Decisions: Pragmatism Over Hype
&lt;/h2&gt;

&lt;p&gt;When designing Rutiq, we made deliberate decisions to adapt to the users' reality, not the other way around.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Why Telegram Instead of a Mobile App?
&lt;/h3&gt;

&lt;p&gt;Developing, maintaining, and getting couriers to download a native app adds massive friction to the onboarding process. &lt;strong&gt;Telegram&lt;/strong&gt; allows us to use an interface users already know. Through a structured bot, couriers can view their order list, get details (address, neighborhood, cross streets), execute delivery workflows, register payments (cash, bank transfer), and upload photos as evidence or report issues. All without leaving their messaging app.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Embracing Excel Instead of Banning It
&lt;/h3&gt;

&lt;p&gt;The shipper lives in Excel. Forcing a company to abruptly change its management tools is a losing battle. Rutiq includes a &lt;strong&gt;bulk import engine from Excel&lt;/strong&gt; that maps columns, validates data, deduplicates, and enables review workflows. Excel remains the entry point, but Rutiq transforms it into structured data.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Applied (and Measurable) AI
&lt;/h3&gt;

&lt;p&gt;We didn't want a generic conversational chatbot. We integrated &lt;strong&gt;Anthropic (Claude)&lt;/strong&gt; as a &lt;strong&gt;data enrichment&lt;/strong&gt; layer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The Use Case:&lt;/em&gt; When an Excel file is imported with incomplete addresses or missing postal codes, the AI infers and normalizes the information based on text context (neighborhood, street, municipality).&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Control:&lt;/em&gt; For AI to be viable in a B2B model, we implemented an audit table (&lt;code&gt;ai_usage&lt;/code&gt;) that tracks costs and token usage for every request, ensuring profitability and transparency.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ⚙️ Development and Architecture Challenges
&lt;/h2&gt;

&lt;p&gt;A logistics system demands robustness. These were the main technical challenges we tackled:&lt;/p&gt;

&lt;h3&gt;
  
  
  True Multi-Tenant Architecture
&lt;/h3&gt;

&lt;p&gt;Rutiq is designed to serve multiple operations without mixing data. The database design revolves around an omnipresent &lt;code&gt;tenant_id&lt;/code&gt;. All FastAPI queries and Supabase Storage policies are strictly filtered by this identifier, ensuring one operator never has access to another's routes or billing.&lt;/p&gt;

&lt;h3&gt;
  
  
  The State Machine and Auditing
&lt;/h3&gt;

&lt;p&gt;A last-mile order is never static. We developed a rigorous &lt;strong&gt;state machine&lt;/strong&gt; (Pending ➔ Assigned ➔ En Route ➔ Attempts ➔ Issue / Delivered). To avoid the classic "who moved what" problem, we implemented an events table (&lt;code&gt;order_events&lt;/code&gt;). Every state transition generates an immutable record, creating a perfect auditable timeline for resolving logistics disputes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edge Security
&lt;/h3&gt;

&lt;p&gt;With public webhooks receiving critical data, security couldn't be an afterthought:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Protected Webhooks:&lt;/strong&gt; The Telegram integration requires a &lt;em&gt;Secret Token&lt;/em&gt; in the headers, strictly validated by FastAPI to prevent forged requests.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Defense in Depth:&lt;/strong&gt; CORS is restricted exclusively to frontend domains, &lt;em&gt;rate limiting&lt;/em&gt; is applied to sensitive routes (like logins or bulk assignments), and there is a strict &lt;strong&gt;zero auth bypass&lt;/strong&gt; rule in production environments.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚀 Key Takeaways for the Community
&lt;/h2&gt;

&lt;p&gt;Building Rutiq left us with valuable lessons for any team evaluating this stack (Supabase + FastAPI + Next.js):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;FastAPI and Supabase are a high-performance duo:&lt;/strong&gt; The development speed of FastAPI combined with Supabase's managed services (especially Auth and Storage) allows you to spin up serious MVPs in weeks, not months.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;AI should solve boring problems:&lt;/strong&gt; Using LLMs to clean and enrich messy databases (like poorly formatted Excel files) brings immense and immediate business value—far more than a generic virtual assistant.&lt;/li&gt;
&lt;li&gt; &lt;strong&gt;Telegram is an underrated UI:&lt;/strong&gt; For field operations workflows (couriers, technicians, inspectors), Telegram bots with inline keyboards and webhooks are a powerful, cheap, and frictionless alternative to dedicated mobile apps.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Rutiq proves that innovation in logistics doesn't always require inventing a new paradigm. Sometimes, it's about structuring existing chaos, choosing the right tools, and applying artificial intelligence exactly where humans lose the most time.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>python</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
