# Anindya Chowdhury > Senior software engineer in Kolkata, India, building backend and search systems: video ingestion and live streams, retrieval over news and CCTV footage, and integrations for broadcasters. Anindya Chowdhury (handle 41x3n) is a senior software engineer based in Kolkata, India. Since July 2026 he has been one of the early engineers at a video startup in stealth. Before that he was a senior software engineer at Videoverse, where he owned the partner integration layer for the Magnifi platform, and before that a software engineer at Let's Dive. He is open to freelance work on AI agents. - Website: https://anindyac.me/ - github.com: https://github.com/41x3n - linkedin.com: https://www.linkedin.com/in/anindya-41x3n/ - x.com: https://x.com/_41x3n - Résumé: https://anindyac.me/resume.pdf - Email: hey@anindyac.me ## Experience - Software Engineer, Video startup (stealth) (2026-07-02 to now): One of the early engineers at a video startup that isn't ready to say its name. More when it's out of stealth. - Senior Software Engineer, Videoverse (2024-01-01 to 2026-07-02): I led partner integration engineering for Magnifi: the API broadcasters build against, the connectors that publish their clips, and the event pipelines between them, at 300K+ partner events a day. - Software Engineer I, Lets Dive (2022-07-01 to 2024-01-01): Full-stack on an AI meeting productivity platform: calendar sync, the integrations that published meeting summaries, and an AI companion product. - Software Engineer Intern, Lets Dive (2021-08-01 to 2022-07-01): My first engineering job: games and small apps inside the main product. Good place to learn how to actually ship things consistently. ## Case studies - [The Partner Layer](https://anindyac.me/work/partner-layer/): How I rebuilt Videoverse's partner integration path as a standalone API service with a frozen schema, signed webhooks, and a delivery audit trail. - [StreamForge](https://anindyac.me/work/streamforge/): How StreamForge spins a Fargate container per live stream, pulls raw segments from a broadcaster's asset manager, and assembles a live HLS playlist. - [Moving a 300-field document to PostgreSQL, live](https://anindyac.me/work/mongo-to-postgres/): How I moved clip variants out of a 300-field MongoDB document into normalized PostgreSQL models, replicating off SNS with no downtime. ## Writing - [My CCTV Search Box Now Searches October](https://anindyac.me/blog/cctv-search-box-searches-october/) (2026-11-13): Triloch, part 6: two local models described 698 October clips in three days. Search finds them now, if you type walks instead of walking. - [Live Sport for Phones: 9:16 Streams with AWS Elemental Inference](https://anindyac.me/blog/live-sport-for-phones-elemental-inference/) (2026-11-03): Elemental Inference, part 1: a smart-cropped 9:16 copy of a live match from MediaLive, set up from code, without risking the 16:9. - [Getting My CCTV Captions Ready for Search](https://anindyac.me/blog/getting-cctv-captions-ready-for-search/) (2026-10-18): Triloch, part 5: the search box works on older captions. I built a local path from new clips to traceable claims, then checked what it got wrong. - [Qwen, Gemma and Marlin Captioned My CCTV Footage](https://anindyac.me/blog/qwen-gemma-marlin-cctv-captions/) (2026-10-12): Triloch, part 4: Qwen, Marlin and Gemma captioned the same CCTV clips. Then a bigger model and a new prompt failed to fix what they got wrong. - [I Built My CCTV Test Set With AI Agents](https://anindyac.me/blog/what-cctv-search-should-find/) (2026-10-01): Triloch, part 3: AI agents built my CCTV search test tools. I ran the experiment through chat, then checked why random clips scored 68%. - [Why My CCTV Filter Lost Me When I Stopped Moving](https://anindyac.me/blog/motion-detection-misses-still-people/) (2026-09-28): Triloch, part 2: motion detection asks whether something changed, and someone sitting still doesn't change. A person detector took still-time coverage to 100%. - [Building a Local-First Search Engine for CCTV Footage](https://anindyac.me/blog/local-first-cctv-search/) (2026-09-25): Triloch, part 1: why I'm building search over hours of recorded camera footage, running entirely on my own machines, and where it stands a few days in. - [Context Selection for LLM Apps Without a Vector Store](https://anindyac.me/blog/context-selection-without-a-vector-store/) (2026-09-22): No embeddings and no similarity search. A policy file and a keyword scorer decide what the model sees, until two topics tie and it withholds the wrong half. - [What News Sitemaps Actually Look Like](https://anindyac.me/blog/what-news-sitemaps-look-like/) (2026-09-11): I checked 23 Indian Google News sitemaps against the spec: entries nine days old, a 2023 article in a two-day window, and the Go harvester built around them. - [I Didn't Know PDFs Have Input Boxes: Filling IRS Tax Forms Programmatically](https://anindyac.me/blog/pdfs-have-input-boxes/) (2026-08-11): IRS forms ship as interactive AcroForm PDFs, which means every box on a 1040 already knows exactly where it sits. Here's how I used that to stamp values onto real tax forms. - [Getting to 'Near Enough' Live Transcription](https://anindyac.me/blog/near-live-transcription/) (2026-08-06): A freelance project taught me the gap between real real-time transcription and just fast enough, and the formula that made rolling chunk transcription work. - [One Story, Two Dozen Outlets](https://anindyac.me/blog/one-story-two-dozen-outlets/) (2026-07-13): How Samvad builds a coverage report from many outlets, orders the timeline, and links its findings to source reporting. - [Rebuilding Samvad's News Retriever](https://anindyac.me/blog/retriever-was-an-llm/) (2026-06-28): I rebuilt Samvad's news retrieval around full article search and ranked evidence, then moved the model out of the retrieval path. - [Building Samvad's Cited News Engine](https://anindyac.me/blog/news-engine-with-citations/) (2026-06-15): How I built Samvad's four-agent news pipeline to answer questions about Indian coverage with links back to its sources. - [ACE — A Framework That Might Work for You](https://anindyac.me/blog/ace-framework/) (2025-11-08): A short reflection on Agency, Consistency, and Ego — a simple framework that’s helped me shape goals and momentum, and might do the same for you. - [A Quick Guide to Creating Azure Function with Golang](https://anindyac.me/blog/azure-function-golang/) (2025-06-15): Step-by-step guide to deploying a Golang backend as an Azure Function using a custom runtime. - [Using a custom domain with Azure Static Web App](https://anindyac.me/blog/azure-custom-domain/) (2023-02-17): How to configure a custom domain purchased from Namecheap with Azure Static Web Apps. ## Projects - [Triloch](https://anindyac.me/blog/local-first-cctv-search/) (being built now): A local-first search engine for my own CCTV footage. It runs entirely on my machines, and I'm writing it up as I build it. - [useQR](https://useqr.xyz/?utm_source=anindyac.me&utm_medium=referral&utm_campaign=portfolio&utm_content=project-title): Fifteen free QR generators for small businesses, covering UPI payments, WhatsApp, Wi-Fi and restaurant menus, plus a scanner. Everything runs in your browser. There's no backend and nothing to sign up for. I launched it to see how far a free tool gets on search traffic alone, and whether anyone wants QR analytics. There's a waitlist for that part. - [Samvad News Intelligence](https://ask.samvadhq.com/sample) (archived, no longer running): I built a news search product that compared how 24 Indian outlets covered the same story. It tracked who published first and linked every finding back to the source article. It searched 369K articles and ran live with accounts and payments for two months. It's shut down now, but a sample report is still up. - [Roast My Plate](https://github.com/41x3n/Roast-My-Plate) (archived, no longer running): Upload a food photo and one of 30 grandmothers roasts you. Sometimes she praises you instead. I built it over a weekend, and each roast comes back as a card you can share. The live version is gone, but the code is up. - [Samvad News Harvester](https://github.com/samvad-hq/samvad-news-harvester): A Go pipeline that pulled Indian news into Samvad. New sources go in a YAML file, so adding one needs no code. It enriches each article with goquery, drops duplicates using BoltDB, and publishes to SQS, SNS or Pub/Sub, whichever the downstream service reads from. It ran in production for three months. - [Indiclang Fraud Shield](https://github.com/41x3n/Indiclang-Fraud-Shield): A bot for WhatsApp and Telegram that checks whether a message is a scam, and it understands Indic languages. I built it for the AI in Action Hackathon. - [Xom](https://github.com/41x3n/Xom): A Telegram bot that converts audio and images with FFmpeg. I built it to learn how async media pipelines work, which is why every conversion goes through a RabbitMQ queue. - [Oni Commit](https://github.com/41x3n/oni-commit): An interactive CLI that walks me through writing a structured commit message. I built it because mine had gotten lazy. - [Impact of Lockdown in India — COVID-19](https://www.kaggle.com/code/anindya41x3n/impact-of-lockdown-in-india-covid-19): One of my first data science projects. I used FBProphet time series models to forecast the impact of India's COVID-19 lockdowns. ## Optional - [Full text of every case study and post](https://anindyac.me/llms-full.txt) - [Reading list](https://anindyac.me/reading-list/)