<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
  
  
  
  
  <title>Saroj | Applied AI and Product Engineer</title>
  <subtitle>Applied AI, backend, and product engineering across LLM applications, AI systems, computer vision, and real-time software.</subtitle>
  <link href="https://sbartaula.github.io/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://sbartaula.github.io/" rel="alternate" type="text/html" />
  <updated>2026-06-18T00:00:00+00:00</updated>
  <id>https://sbartaula.github.io/</id>
  <author>
    <name>Saroj</name>
  </author>

  
  
  <entry>
    <title>Why I’m Building Motion Intelligence</title>
    <link href="https://sbartaula.github.io/writing/why-i-am-building-motion-intelligence/" />
    <published>2026-06-18T00:00:00+00:00</published>
    <updated>2026-06-18T00:00:00+00:00</updated>
    <id>https://sbartaula.github.io/writing/why-i-am-building-motion-intelligence/</id>
    <summary>Why structured movement data matters, and why video is only the starting point.</summary>
    <content type="html">&lt;p&gt;Raw video is abundant, but raw video is not a usable interface for most motion-driven software systems.&lt;/p&gt;

&lt;p&gt;The core thesis behind Tenslam Vision is simple:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;video should be transformed into structured movement representation&lt;/li&gt;
  &lt;li&gt;that representation must be stable enough for product workflows&lt;/li&gt;
  &lt;li&gt;reliability matters more than demo aesthetics&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;what-motion-intelligence-means-in-practice&quot;&gt;What motion intelligence means in practice&lt;/h2&gt;

&lt;p&gt;In this context, motion intelligence is not just pose estimation. It is the full transformation layer from pixels to dependable signals:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;landmarks and temporal dynamics&lt;/li&gt;
  &lt;li&gt;repetition and phase structure&lt;/li&gt;
  &lt;li&gt;posture and quality indicators&lt;/li&gt;
  &lt;li&gt;features that downstream systems can consume repeatedly&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;why-this-matters-across-domains&quot;&gt;Why this matters across domains&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Fitness:&lt;/strong&gt; immediate feedback and movement-quality guidance&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Sports:&lt;/strong&gt; repeatable motion analysis and progression tracking&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Digital twins:&lt;/strong&gt; structured human state representation&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Physical AI interfaces:&lt;/strong&gt; alignment between human motion and machine systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;architecture-direction&quot;&gt;Architecture direction&lt;/h2&gt;

&lt;p&gt;The build direction is pipeline-first:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;extraction from video frames&lt;/li&gt;
  &lt;li&gt;temporal stabilization&lt;/li&gt;
  &lt;li&gt;feature schema construction&lt;/li&gt;
  &lt;li&gt;downstream interface for analytics and real-time products&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal is composable infrastructure, not one-off demos.&lt;/p&gt;

&lt;h2 id=&quot;measurement-frame&quot;&gt;Measurement frame&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Dimension&lt;/th&gt;
      &lt;th&gt;Why it matters&lt;/th&gt;
      &lt;th&gt;Current public status&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Signal stability&lt;/td&gt;
      &lt;td&gt;Structured data is only useful if stable over time&lt;/td&gt;
      &lt;td&gt;Measurement in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Cross-condition robustness&lt;/td&gt;
      &lt;td&gt;Real-world use includes varied camera/lighting setups&lt;/td&gt;
      &lt;td&gt;Evaluation in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Downstream utility&lt;/td&gt;
      &lt;td&gt;Features must be usable by product modules&lt;/td&gt;
      &lt;td&gt;Integration in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Failure observability&lt;/td&gt;
      &lt;td&gt;Reliability work requires explicit failure taxonomy&lt;/td&gt;
      &lt;td&gt;Ongoing documentation&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;risk-register&quot;&gt;Risk register&lt;/h2&gt;

&lt;p&gt;Key technical risks right now:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;domain shift across body types, camera geometry, and environments&lt;/li&gt;
  &lt;li&gt;brittle feature behavior under occlusion and fast motion&lt;/li&gt;
  &lt;li&gt;overfitting the representation to one use case too early&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mitigation strategy:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;standardize test scenarios and track behavior by condition&lt;/li&gt;
  &lt;li&gt;separate core representation from app-specific heuristics&lt;/li&gt;
  &lt;li&gt;publish failure classes alongside performance improvements&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;why-i-keep-building-this&quot;&gt;Why I keep building this&lt;/h2&gt;

&lt;p&gt;I am less interested in proving that a model can run, and more interested in building a representation layer that remains useful when products and conditions change.&lt;/p&gt;

&lt;h2 id=&quot;next-milestone&quot;&gt;Next milestone&lt;/h2&gt;

&lt;p&gt;Next public release will include a case-study style breakdown of the motion feature schema, failure taxonomy, and selected validation scenarios.&lt;/p&gt;
</content>
  </entry>
  
  
  <entry>
    <title>Running Small LLMs Locally on Limited Hardware</title>
    <link href="https://sbartaula.github.io/writing/running-small-llms-locally/" />
    <published>2026-06-18T00:00:00+00:00</published>
    <updated>2026-06-18T00:00:00+00:00</updated>
    <id>https://sbartaula.github.io/writing/running-small-llms-locally/</id>
    <summary>What local model experiments taught me about speed, memory, and practical constraints.</summary>
    <content type="html">&lt;p&gt;I run small LLMs locally because it exposes the engineering truth quickly: every performance claim is bounded by hardware.&lt;/p&gt;

&lt;p&gt;On constrained Ubuntu machines, the objective is not to run the largest model possible. The objective is to identify practical operating zones for real workflows.&lt;/p&gt;

&lt;h2 id=&quot;evaluation-frame&quot;&gt;Evaluation frame&lt;/h2&gt;

&lt;p&gt;I use the same dimensions in each run so results are comparable over time:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;inference throughput&lt;/li&gt;
  &lt;li&gt;memory footprint (RAM/VRAM)&lt;/li&gt;
  &lt;li&gt;response quality under constrained context windows&lt;/li&gt;
  &lt;li&gt;system responsiveness while the model is active&lt;/li&gt;
  &lt;li&gt;setup and operational complexity&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;benchmark-matrix&quot;&gt;Benchmark matrix&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Dimension&lt;/th&gt;
      &lt;th&gt;Why it matters&lt;/th&gt;
      &lt;th&gt;Current public status&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Tokens per second&lt;/td&gt;
      &lt;td&gt;Determines usability for interactive workflows&lt;/td&gt;
      &lt;td&gt;Measurement in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Peak memory usage&lt;/td&gt;
      &lt;td&gt;Hard cap for local hardware viability&lt;/td&gt;
      &lt;td&gt;Measurement in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Prompt/context sensitivity&lt;/td&gt;
      &lt;td&gt;Impacts output stability and quality&lt;/td&gt;
      &lt;td&gt;Evaluation in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Quantization tradeoff&lt;/td&gt;
      &lt;td&gt;Controls speed-quality-memory balance&lt;/td&gt;
      &lt;td&gt;Comparison in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Runtime overhead&lt;/td&gt;
      &lt;td&gt;Affects repeatable developer workflows&lt;/td&gt;
      &lt;td&gt;Evaluation in progress&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;observed-constraints-that-matter-most&quot;&gt;Observed constraints that matter most&lt;/h2&gt;

&lt;p&gt;These constraints repeatedly dominate outcomes:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Memory headroom:&lt;/strong&gt; low spare memory collapses usability before model quality becomes relevant&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Context inflation:&lt;/strong&gt; larger prompts can quietly degrade latency and user experience&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Quantization choice:&lt;/strong&gt; speed gains may come with quality loss that is task-dependent&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Driver/runtime setup:&lt;/strong&gt; small environment mismatches can invalidate otherwise good configs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;failure-modes&quot;&gt;Failure modes&lt;/h2&gt;

&lt;p&gt;Common failure patterns during local runs:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;throughput looks acceptable in short tests but degrades in extended sessions&lt;/li&gt;
  &lt;li&gt;response quality drops under longer context chains&lt;/li&gt;
  &lt;li&gt;machine becomes operationally unpleasant even when inference technically succeeds&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mitigation direction:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;standardize run profiles by task class&lt;/li&gt;
  &lt;li&gt;treat local workloads as budgeted systems (latency and memory budgets first)&lt;/li&gt;
  &lt;li&gt;separate demo configs from sustained-workflow configs&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;practical-takeaway&quot;&gt;Practical takeaway&lt;/h2&gt;

&lt;p&gt;Local-first experimentation is valuable because it forces architecture discipline.
It becomes clear which model/runtime choices can survive repeated use, not just one successful notebook demo.&lt;/p&gt;

&lt;h2 id=&quot;next-milestone&quot;&gt;Next milestone&lt;/h2&gt;

&lt;p&gt;The next update will include comparative benchmark snapshots across selected model sizes and quantization profiles, using one reproducible prompt and hardware baseline.&lt;/p&gt;
</content>
  </entry>
  
  
  <entry>
    <title>Building a Real-Time AI Gym Trainer</title>
    <link href="https://sbartaula.github.io/writing/building-real-time-ai-gym-trainer/" />
    <published>2026-06-18T00:00:00+00:00</published>
    <updated>2026-06-18T00:00:00+00:00</updated>
    <id>https://sbartaula.github.io/writing/building-real-time-ai-gym-trainer/</id>
    <summary>Lessons from turning a mobile camera into a feedback loop for training.</summary>
    <content type="html">&lt;p&gt;Tenslam Gym started from one practical question: can a phone camera improve movement quality while a person is still in the set?&lt;/p&gt;

&lt;p&gt;For this product, detection quality alone is not enough. The system has to close a full loop in near real time:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;detect pose landmarks&lt;/li&gt;
  &lt;li&gt;estimate exercise state and repetition phase&lt;/li&gt;
  &lt;li&gt;evaluate posture quality&lt;/li&gt;
  &lt;li&gt;return feedback quickly enough to influence the next rep&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If this loop is slow or unstable, the product feels disconnected and users stop trusting the feedback.&lt;/p&gt;

&lt;h2 id=&quot;system-architecture&quot;&gt;System architecture&lt;/h2&gt;

&lt;p&gt;The current prototype architecture is intentionally simple:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;On-device pose estimation:&lt;/strong&gt; MediaPipe landmarks from camera frames&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Signal conditioning:&lt;/strong&gt; smoothing and temporal filtering to reduce jitter&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;State machine logic:&lt;/strong&gt; repetition counting and posture-rule checks&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Feedback layer:&lt;/strong&gt; concise visual cues and counters in-session&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Session persistence:&lt;/strong&gt; lightweight Firebase-backed product state&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The non-obvious work is in the transition logic between these stages, especially when inputs are partial or noisy.&lt;/p&gt;

&lt;h2 id=&quot;benchmark-frame&quot;&gt;Benchmark frame&lt;/h2&gt;

&lt;p&gt;The table below is the benchmark frame I use during iteration.&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Why it matters&lt;/th&gt;
      &lt;th&gt;Current public status&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;End-to-end feedback latency&lt;/td&gt;
      &lt;td&gt;Determines whether feedback can change user behavior in-session&lt;/td&gt;
      &lt;td&gt;Measurement in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Rep-count consistency&lt;/td&gt;
      &lt;td&gt;Core trust metric for training use&lt;/td&gt;
      &lt;td&gt;Validation in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Posture alert precision&lt;/td&gt;
      &lt;td&gt;Reduces noisy or incorrect corrections&lt;/td&gt;
      &lt;td&gt;Validation in progress&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Out-of-frame recovery behavior&lt;/td&gt;
      &lt;td&gt;Real users move unpredictably&lt;/td&gt;
      &lt;td&gt;Mitigation in progress&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;I am publishing this structure now so future updates can be compared on the same measurement frame.&lt;/p&gt;

&lt;h2 id=&quot;failure-modes-observed&quot;&gt;Failure modes observed&lt;/h2&gt;

&lt;p&gt;These are the highest-impact failure classes so far:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Partial body visibility:&lt;/strong&gt; causes unstable landmark geometry and false transitions&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tempo changes:&lt;/strong&gt; can trigger double-counting in naive phase boundaries&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Camera angle drift:&lt;/strong&gt; reduces reliability for fixed threshold logic&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Jitter bursts:&lt;/strong&gt; produce posture warnings that feel inconsistent to users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Current mitigation direction:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;temporal smoothing tuned by exercise class&lt;/li&gt;
  &lt;li&gt;state-transition hysteresis to reduce flip-flop behavior&lt;/li&gt;
  &lt;li&gt;confidence gating before issuing posture alerts&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;product-lesson&quot;&gt;Product lesson&lt;/h2&gt;

&lt;p&gt;Real-time fitness AI is a systems reliability problem, not a single-model problem.
Useful behavior comes from coordination across inference, timing, heuristics, UX signaling, and recovery from imperfect inputs.&lt;/p&gt;

&lt;h2 id=&quot;next-milestone&quot;&gt;Next milestone&lt;/h2&gt;

&lt;p&gt;The next milestone is a publishable case-study release with:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;measured latency envelope on target devices&lt;/li&gt;
  &lt;li&gt;rep-count reliability on selected movement patterns&lt;/li&gt;
  &lt;li&gt;explicit failure-mode matrix and mitigation status&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  
</feed>
