Vimal Anand's Work | ContraWork by Vimal Anand
Vimal Anand

Vimal Anand

Full Stack AI Engineer shipping fast SaaS MVPs

New to Contra

Vimal is ready for their next project!

Cover image for ๐—›๐—ฒ๐—ฎ๐—ฑ๐—น๐—ถ๐—ป๐—ฒ: What started as a
๐—›๐—ฒ๐—ฎ๐—ฑ๐—น๐—ถ๐—ป๐—ฒ: What started as a simple B2C expense tracker has officially pivoted into a fully automated B2B Financial SaaS. Introducing ๐—™๐—ถ๐—ป๐—ฎ๐—ป๐—ฆ๐—บ๐—ฎ๐—ฟ๐˜. ๐—•๐—ผ๐—ฑ๐˜†: I realized that startup founders and agency owners spend countless hours manually categorizing bank statements and tracking operational costs. I wanted to build a solution that entirely automates this bookkeeping process. Building the core featureโ€”an "๐€๐ˆ ๐๐š๐ง๐ค ๐’๐ญ๐š๐ญ๐ž๐ฆ๐ž๐ง๐ญ ๐๐š๐ซ๐ฌ๐ž๐ซ"โ€”was one of the toughest technical challenges Iโ€™ve faced. I hit a massive roadblock when Next.js 14โ€™s Webpack bundler kept breaking legacy PDF OCR libraries in serverless environments. Instead of compromising on the feature, I completely re-architected the data pipeline: โ€ข I bypassed Webpack issues by implementing pdf2json on a strict Node.js runtime for secure, server-side text extraction. โ€ข I piped this raw text into Groqโ€™s LLaMA-3.1-8b model using highly optimized system prompts. โ€ข The result? Lightning-fast, deterministic extraction that converts raw PDF text into perfectly structured JSON arrays. Now, users can drag-and-drop a PDF statement, and the AI instantly categorizes every transaction (Infrastructure, Payroll, Revenue) into a 'pending' staging area. Once approved, the data flows securely via Drizzle ORM into a Neon PostgreSQL database, updating real-time Recharts dashboards. ๐‘ป๐’†๐’„๐’‰ ๐‘บ๐’•๐’‚๐’„๐’Œ: Next.js App Router, Tailwind CSS, Shadcn UI, Clerk Auth, Drizzle ORM, Neon DB, and Groq SDK. ๐—ช๐—ต๐—ฎ๐˜'๐˜€ ๐—ก๐—ฒ๐˜…๐˜? I am currently looking for my next full-time opportunity as a Full Stack Developer (based in Bangalore or anywhere). I am also actively taking on ๐—ณ๐—ฟ๐—ฒ๐—ฒ๐—น๐—ฎ๐—ป๐—ฐ๐—ฒ ๐—ฝ๐—ฟ๐—ผ๐—ท๐—ฒ๐—ฐ๐˜๐˜€. If you are a founder or agency looking to build scalable, AI-integrated SaaS MVPs without the technical headache, let's connect. Check out the demo video below to see the AI parser in action! ๐Ÿ”— Live Project: https://lnkd.in/gSNu3cAK (https://lnkd.in/gSNu3cAK)hashtag#BuildInPublic (https://www.linkedin.com/search/results/all/?keywords=%23buildinpublic&origin=HASH_TAG_FROM_FEED) hashtag#Nextjs (https://www.linkedin.com/search/results/all/?keywords=%23nextjs&origin=HASH_TAG_FROM_FEED) hashtag#FullStackDevelopment (https://www.linkedin.com/search/results/all/?keywords=%23fullstackdevelopment&origin=HASH_TAG_FROM_FEED) hashtag#SaaS (https://www.linkedin.com/search/results/all/?keywords=%23saas&origin=HASH_TAG_FROM_FEED) hashtag#AI (https://www.linkedin.com/search/results/all/?keywords=%23ai&origin=HASH_TAG_FROM_FEED) hashtag#Groq (https://www.linkedin.com/search/results/all/?keywords=%23groq&origin=HASH_TAG_FROM_FEED) hashtag#PostgreSQL (https://www.linkedin.com/search/results/all/?keywords=%23postgresql&origin=HASH_TAG_FROM_FEED) hashtag#WebDevelopment (https://www.linkedin.com/search/results/all/?keywords=%23webdevelopment&origin=HASH_TAG_FROM_FEED) hashtag#FreelanceDeveloper (https://www.linkedin.com/search/results/all/?keywords=%23freelancedeveloper&origin=HASH_TAG_FROM_FEED) hashtag#Hiring (https://www.linkedin.com/search/results/all/?keywords=%23hiring&origin=HASH_TAG_FROM_FEED)
1
4
Cover image for I recently architected and built
I recently architected and built VedaAI Assessment Creator, a personal project designed to transform unstructured notes and files (PDFs, DOCX) into highly structured, curriculum-aligned exam papers. Building enterprise-grade applications at scale requires looking beyond simply making API calls. For this build, I wanted to focus entirely on non-blocking architectures and deterministic AI outputs. Here is a breakdown of the technical decisions: Asynchronous Workers: Instead of blocking the main HTTP thread during heavy file parsing and AI inference, I implemented a distributed task queue using BullMQ and Upstash Serverless Redis. The Express API responds in under 100ms, while background workers handle the heavy lifting. Deterministic AI: I opted for Groq (Llama-3.3-70b) utilizing its JSON mode. The sub-500ms inference time and guaranteed schema compliance eliminated the need for complex post-processing validation. Real-Time Synchronization: A WebSocket setup broadcasts job completion events, updating the Next.js frontend instantly without relying on inefficient polling. Database & State: MongoDB Atlas handles ACID transactions for complex document updates, while Zustand manages lightweight, atomic state slices on the frontend. I also built in granular question regenerationโ€”allowing users to re-run isolated inference calls for single questions without replacing the entire paperโ€”and print-ready A4 PDF exports. Designing this kind of scalable infrastructure directly supports my ongoing deep dive into advanced AI and machine learning systems. You can check out the Live Link here: https://lnkd.in/geAXUtHC . I would love to hear how others are handling asynchronous AI tasks in production!
1
8
Cover image for Ever watched an AI write
Ever watched an AI write bad SQL, instantly realize its mistake, and rewrite it perfectlyโ€”all without human intervention? Over the weekend, I built the Autonomous Data Analyst Agent. It doesnโ€™t just translate natural language to SQL; it actively debugs itself. ๐—ง๐—ต๐—ฒ ๐—ฃ๐—ฟ๐—ผ๐—ฏ๐—น๐—ฒ๐—บ: Enterprises want AI to query their proprietary databases, but LLMs often hallucinate columns or mess up syntax. ๐—ง๐—ต๐—ฒ ๐—ฆ๐—ผ๐—น๐˜‚๐˜๐—ถ๐—ผ๐—ป: I engineered a Self-Correcting Reflection Loop using LangGraph. Hereโ€™s what happens under the hood: 1๏ธโƒฃ You ask a complex question in plain English. 2๏ธโƒฃ The LLM generates DuckDB-flavored SQL. 3๏ธโƒฃ The Executor node runs it securely in a local container. 4๏ธโƒฃ ๐Ÿ”„ ๐—ง๐—ต๐—ฒ ๐— ๐—ฎ๐—ด๐—ถ๐—ฐ: If DuckDB throws a parser error, the Reflection node catches it, feeds the error trace back to the LLM, and auto-corrects the query. 5๏ธโƒฃ Once successful, a Python agent generates a Matplotlib visualization, streaming everything to a sleek Next.js dark-mode UI. Plus, I integrated LangGraph MemorySaver, allowing the agent to retain context for human-like follow-up questions. ๐—ง๐—ฒ๐—ฐ๐—ต ๐—ฆ๐˜๐—ฎ๐—ฐ๐—ธ: Next.js, FastAPI, LangGraph, DuckDB, Groq (Llama-3), Docker Compose. Everything is fully containerized and open-source. Drop a โญ on the repo and let me know what you think! ๐—š๐—ถ๐˜๐—›๐˜‚๐—ฏ ๐—ฅ๐—ฒ๐—ฝ๐—ผ: https://lnkd.in/ddnE9rgq (https://lnkd.in/ddnE9rgq)hashtag#AI (https://www.linkedin.com/search/results/all/?keywords=%23ai&origin=HASH_TAG_FROM_FEED) hashtag#LangGraph (https://www.linkedin.com/search/results/all/?keywords=%23langgraph&origin=HASH_TAG_FROM_FEED) hashtag#DataEngineering (https://www.linkedin.com/search/results/all/?keywords=%23dataengineering&origin=HASH_TAG_FROM_FEED) hashtag#Nextjs (https://www.linkedin.com/search/results/all/?keywords=%23nextjs&origin=HASH_TAG_FROM_FEED) hashtag#FastAPI (https://www.linkedin.com/search/results/all/?keywords=%23fastapi&origin=HASH_TAG_FROM_FEED) hashtag#Docker (https://www.linkedin.com/search/results/all/?keywords=%23docker&origin=HASH_TAG_FROM_FEED) hashtag#MachineLearning (https://www.linkedin.com/search/results/all/?keywords=%23machinelearning&origin=HASH_TAG_FROM_FEED) hashtag#OpenSource (https://www.linkedin.com/search/results/all/?keywords=%23opensource&origin=HASH_TAG_FROM_FEED)
1
12
๐—›๐—ฒ๐—ฎ๐—ฑ๐—น๐—ถ๐—ป๐—ฒ: Most Voice AI agents still feel like glorified walkie-talkies. So I built one that actually listens like a human. Most voice bots today follow a rigid, linear loop: You speak โž” Wait โž” Bot speaks. If you dare interrupt them mid-sentence? They either completely ignore you or their context buffer gets totally mangled. ๐—ง๐—ผ ๐˜€๐—ผ๐—น๐˜ƒ๐—ฒ ๐˜๐—ต๐—ถ๐˜€, I engineered Astra Duplex Agent โ€” a sub-50ms, ultra-low latency, full-duplex conversational Voice AI built to handle natural human interruptions seamlessly. Here is what went into building the architecture under the hood: True Full-Duplex WebSockets: Built on FastAPI, allowing real-time bi-directional audio streaming instead of turn-based HTTP requests. Edge Voice Activity Detection (VAD): Deployed Silero VAD using ONNX Runtime to catch user barge-ins at the edge with near-zero overhead. LangGraph State Machine: Instead of a simple monolithic script, the conversation logic is modeled as a state graph, giving precise control over execution flow. Partial State Tracking & Memory Persistence: This was the trickiest part. When an interruption happens, Astra doesn't just stop audio playback โ€” an async kill-switch halts Groq's LLaMA-3.1 mid-token, calculates the exact partial sentence actually spoken by the TTS, and saves only that partial context to an Upstash Redis buffer. Sub-50ms Inference & Streaming: Leveraged Groq LPU (LLaMA-3.1 + Whisper Large v3) paired with ElevenLabs Turbo v2.5 streaming. The result? An agent that you can interrupt mid-thought, change topics with on the fly, and ask follow-up questions without it losing historical context. Containerized with Docker and live on Render & Vercel. Check out the full architecture & live demo below! https://lnkd.in/eC6yak3i (https://lnkd.in/eC6yak3i)https://lnkd.in/eN38HGZD (https://lnkd.in/eN38HGZD)#VoiceAI (https://www.linkedin.com/search/results/all/?keywords=%23voiceai&origin=HASH_TAG_FROM_FEED) #GenerativeAI (https://www.linkedin.com/search/results/all/?keywords=%23generativeai&origin=HASH_TAG_FROM_FEED) #LangGraph (https://www.linkedin.com/search/results/all/?keywords=%23langgraph&origin=HASH_TAG_FROM_FEED) #SystemDesign (https://www.linkedin.com/search/results/all/?keywords=%23systemdesign&origin=HASH_TAG_FROM_FEED) #FastAPI (https://www.linkedin.com/search/results/all/?keywords=%23fastapi&origin=HASH_TAG_FROM_FEED) #MachineLearning (https://www.linkedin.com/search/results/all/?keywords=%23machinelearning&origin=HASH_TAG_FROM_FEED) #WebSockets (https://www.linkedin.com/search/results/all/?keywords=%23websockets&origin=HASH_TAG_FROM_FEED) #Python (https://www.linkedin.com/search/results/all/?keywords=%23python&origin=HASH_TAG_FROM_FEED) #AIENGINEERING (https://www.linkedin.com/search/results/all/?keywords=%23aiengineering&origin=HASH_TAG_FROM_FEED)
1
15