# Abhishek Jha > Full stack engineer in Kolkata, India. Builds backends, web apps, mobile apps and AI agents, and ships them end to end. Built Lonch, a deploy platform on AWS, and Sutra AI, scheduled AI agents. Open to full-time and contract full stack roles, remote or relocating. - Email: connect@0bhishek.com - GitHub: https://github.com/iCoderabhishek - LinkedIn: https://www.linkedin.com/in/0bhishek - X: https://x.com/0bhishek - Writing: https://dev.to/mrcssdev ## Pages - [Home](https://0bhishek.com/): summary, stack, experience, selected work - [Projects](https://0bhishek.com/projects): all 9 projects with demos - [Writing](https://0bhishek.com/blogs): articles and engineering notes ## Experience ### Full Stack Developer, Code Samdevx Pvt. Ltd. (Nov 2025 — July 2026, Mumbai, India) Shipped whole features on a product team, from the database to the screen, every sprint. - Took features from database schema to API to UI to deploy, shipping in sprints through the team's CI/CD pipeline. - Wrote Node.js/Express APIs on PostgreSQL, with request validation, a shared error-handling middleware, and structured logs so production issues could be traced. - Fixed slow pages by rewriting the heavy queries, caching repeat reads, and lazy-loading the parts of the UI that didn't need to load first. - Wrote Jest unit and integration tests for the APIs I owned, reviewed teammates' PRs, and kept the API docs current. ### Full Stack Mobile Developer, DealzUp Technologies (Apr 2025 — Nov 2025, Toronto, Canada) Built the vendor side of the mobile app, from sign-up to the screens vendors use every day. - Built the vendor side of the app: onboarding, two-factor auth, and the login flow wired to the backend. - Connected screens to REST APIs with Axios and Formik, with local caching and data sync so screens didn't refetch everything on every visit. - Profiled the slow screens, then cut unnecessary re-renders by restructuring state and lazy-rendering what wasn't on screen yet. ## Projects - **Lonch** (August 2026): My own deploy platform. Connect a GitHub repo, Lonch builds it in an isolated Docker container and streams the logs live. Static sites go to S3 + CloudFront, backends to ECS Fargate with rolling deploys. Built with Node.js, Docker, AWS ECS, S3 + CloudFront, WebSockets. (live: https://lonch.cloud, code: https://github.com/iCoderabhishek/Lonch/) - **Sutra AI** (October 2026): Scheduled AI agents you run from the terminal. A hand-written ReAct loop (no agent framework), BullMQ for cron jobs, Redis Streams to stream each step live, and hard caps of 10 steps and $0.25 per run. Built with Go, TypeScript, Python, BullMQ, Redis Streams. (live: https://sutraai.0bhishek.com/, code: https://github.com/iCoderabhishek/Sutra-AI) - **Dropdesk** (June 2026): File sharing for teams, like a small Google Drive. Uploads go straight to S3 through presigned URLs, workspaces have role-based permissions, and sign-in is Google OAuth. Built with Next.js, Node.js, PostgreSQL, AWS S3, Redis. (live: https://dropdesk.0bhishek.com/, code: https://github.com/iCoderabhishek/Dropdesk/) - **Uptime24** (July 2025 - Sept 2025): Uptime monitoring where independent validators check your site and report back over WebSockets. A hub collects their results into status pages, alerts, and incident history. Built with Next.js, TypeScript, WebSockets, Web3. (live: https://uptime24.0bhishek.com/, code: https://github.com/iCoderabhishek/uptime-24.git) - **React Starter Plus** (August 2025): An npm CLI that scaffolds a React app with JS or TS, Tailwind v4, Zustand, and a CI/CD workflow already wired up. Built with NPM, React 19, CLI, CI/CD, Zustand. (live: https://npmjs.com/package/react-starter-plus, code: https://github.com/iCoderabhishek/npm-package.git) - **Findash** (March 2026): A personal finance dashboard for tracking income and expenses. Data stays in the browser in a local store. Built with React.js, Zustand, LocalDB, Aceternity UI. (live: https://findash.0bhishek.tech, code: https://github.com/iCoderabhishek/Findash.git) - **Clandr** (July 2025): A scheduling app for web and Android that syncs both ways with Google Calendar. One Express + Prisma backend serves both clients. Built with React Native, Expo, Next.js, PostgreSQL. (live: https://expo.dev/artifacts/eas/vUy39yCWfoj4YYhEjFUc75.apk, code: https://github.com/iCoderabhishek/clandr-mobile-app.git) - **Jurn** (July 2025): A small offline journal app: write, edit, and search entries. Everything stays on the phone in AsyncStorage. Built with React Native, Expo, NativeWind, AsyncStorage. (code: https://github.com/iCoderabhishek/Jurn-minimalistic-journal-app.git) - **Todlerr UI** (Oct 2024 - Nov 2024): A component library for Next.js: drop-in components, themes, and responsive layouts built with Tailwind and Framer Motion. Built with Next.js, TypeScript, TailwindCSS, Framer Motion. (live: https://toddler-ui.vercel.app/) ## Skills - **AI agents**: ReAct loop, Tool use, LLM APIs, BullMQ cron, Redis Streams, Go, Python. Agents that run on a schedule and stream every step live. My own ReAct loop with no framework, plus hard caps on steps and spend so a run can't loop forever or overspend. - **Backend**: Node.js, Express, Go, Python, PostgreSQL, Redis, BullMQ, Prisma. APIs, queues and databases. Validated requests, one shared error shape and structured logs, so a production issue traces back to a request. - **Frontend**: TypeScript, React, Next.js, Tailwind, Zustand. Interfaces wired to real data. Heavy queries rewritten, repeat reads cached, and anything that doesn't need to load first is lazy-loaded. - **Mobile**: React Native, React Native CLI, Expo, Formik, Axios. Onboarding, two-factor auth and screens that don't refetch everything on every visit. Profiled the slow ones and cut the re-renders. - **Infra & tests**: Docker, AWS ECS, S3 + CloudFront, GitHub Actions, Jest. Isolated Docker builds, rolling deploys on ECS Fargate, static sites on S3 + CloudFront. Jest unit and integration tests on the APIs I own. ## Articles - [Why AI Agents Cost More Than LLMs (and How to Stop Bleeding Tokens)](https://dev.to/mrcssdev/why-ai-agents-cost-more-than-llms-and-how-to-stop-bleeding-tokens-4e4g) (May 2026): An analysis of the true cost of running AI agents and practical strategies to optimize token consumption without sacrificing performance. - [Redis Is Fast, Not Loyal: Why It Should Never Be Your Main DB](https://dev.to/mrcssdev/redis-is-fast-not-loyal-why-it-should-never-be-your-main-db-2o46) (June 2026): Exploring the limitations of Redis as a primary data store and why its speed shouldn't blind you to its volatility. - [How I Build A NPM Package That Lets You Scaffold React Apps](https://dev.to/mrcssdev/how-i-build-an-npm-package-that-lets-you-scaffold-react-apps-5a5h) (Sep 2025): This is a tutorial on how to create a React app using the React Starter Plus template. ## Engineering notes - **My agent saw the price change and still didn't tell anyone** (Oct 2026): In Sutra's real-model eval, a small free model correctly spotted a price change on a page, then skipped the alert and never saved it to memory. The code was fine; the model just dropped steps. That's why the evals now separate code bugs from model mistakes, and why the important rules (allowed tools, fixed recipients, step and cost caps) live in code instead of the prompt. - **Pub/Sub forgets, Streams don't** (Oct 2026): Sutra streams every agent step to the terminal. With Redis Pub/Sub, anything published before the client subscribes is just gone, and a run can start before the terminal connects. Redis Streams replay from the start, so nothing is lost. The cost is memory, so every stream gets a TTL. - **Files shouldn't go through your server** (June 2026): Routing uploads through a Node API means the server pays for every byte and large files tie it up. In Dropdesk the server only signs a presigned S3 URL and records the metadata; the browser uploads straight to S3. The trade-off is that an upload can now fail somewhere the server never sees, so the database has to cope with files that were promised but never arrived. - **Redis is fast, not loyal** (June 2026): Dropdesk caches reads in Redis, which makes it tempting to start treating Redis as a database. But Redis is memory first; depending on how persistence is set up, a restart can lose recent writes. So Postgres stays the source of truth and Redis only holds things I can rebuild. I wrote up the longer version.