Jun 25, 2026

How I Built Jatayu — A Personalized AI Writing Agent

 The NAS (The Accidental Server)

It all started with a baby on the way. I’m someone who takes too many photos — ultra HD was only going to make the problem worse. I didn’t want to be at the mercy of Google Photos or iCloud forever. So I got a UGreen DH4300PLUS NAS to own my own storage.

The transfer happened. Life’s worth of data, moved. And then I looked at what I had: an always-on server sitting in my home, doing nothing 24 hours a day except spinning disks.

The obvious next steps followed — almost inevitably. RetroArch for retro gaming (Mario, Aladdin, Prince of Persia — the classics that got preserved rather than lost). Pi-hole for ad blocking across the entire local network. Small wins that made the NAS feel alive.

But these were all consuming software running on someone else’s idea. The server had more to give.

OpenClaw and the Automation Rabbit Hole

That’s when I gave OpenClaw a try. What started as a curiosity turned into something I couldn’t stop building. Daily news digests. Fitness coaching agents pulling from my Garmin data. A postpartum fitness agent for my wife. India news briefings. A GenAI research monitor every Monday. Learning curricula on football analytics, cricket analytics, personal finance, marketing measurement — all delivered on cron schedules like a personal university running in the background.

The agents were useful. But they had a cost problem and a reliability problem. Every call was hitting a cloud API. The costs were manageable but not zero. And more importantly — I didn’t love the dependency. I had built a self-hosted life (the NAS, the Pi-hole, the retro gaming setup) precisely to own my own infrastructure. The AI layer felt inconsistent with that.

Ollama on the Mac Studio

I had a Mac Studio that had been doing almost nothing since I stopped video editing. Powerful machine, severely underutilized, running warm and purposeless on my desk.

Ollama fixed that. I installed it, pulled Qwen3 14B, and suddenly had a local LLM that ran fast, cost nothing per call, and lived entirely inside my home network. The Mac Studio had found its second life.

I pointed OpenClaw at the local Ollama endpoint. The digests kept running. The costs dropped. The latency improved. And I had something I hadn’t had before: an AI setup I fully controlled, end to end, from the disk to the model weights.

Jatayu

With the infrastructure in place, I could think bigger.

I’ve been writing for 15 years. Tweets, blog posts (including this one), Quora answers, Team-BHP travelogues about road trips and car reviews, Airbnb reviews, published technical articles on Kinsta, SitePoint, DataQuest, DigitalOcean. Somewhere across all of that is a voice — a way of making a point, opening a piece, landing a joke — that is distinctly mine.

The question was whether an AI could learn it.

I built Jatayu: a personalized writing agent on OpenClaw, backed by Qwen3 14B running locally on the Mac Studio. The corpus it was trained on:

  • ~2,200 original tweets (retweets and replies filtered out)
  • ~1,000 Facebook posts (link shares and one-liners filtered out)
  • 400+ blog posts from Transcendental Tech Talk
  • 188 Quora answers
  • Airbnb and Product reviews
  • 4 Team-BHP threads (travelogues and car reviews)
  • Published articles from Kinsta, SitePoint, DataQuest, DigitalOcean
  • My book on Git

Each piece was tagged with a recency weight — 1.0 for writing from 2021 onwards, down to 0.2 for anything before 2014. The goal was for Jatayu to learn who I am now, not who I was in college. A style guide was then extracted from the corpus — how I structure sentences, how I open pieces, how I argue, what I find funny, what phrases I never use. That style guide anchors Jatayu’s system prompt.

This blog post was written using the Jatayu prompt. Leave it genuinely ambiguous whether it was edited, partially written, or fully written by Jatayu. The last line should make the reader pause and wonder. It should feel like a natural ending to the story, not a twist stapled on.


Liked this post? Have any suggestions? Just let me know. Feel free to comment below!

Jul 13, 2016

Exploring Southern Sri Lanka: Bentota and Galle

This summer, I visited Sri Lanka for my internship and had the opportunity to explore the fantastic island nation. I landed in Colombo when the Sri Lankan new year celebrations were going on (mid April) and therefore decided to take a trip down South to the beautiful little towns of Bentota and Galle.

How to Reach

International Flights from Chennai take about an hour to reach Colombo. From Colombo, you may take a train from the Colombo Fort railway station to Bentota. There are many options in terms of the International Airlines, with Sri Lankan Airlines providing jumbo jets for the journey.

May 21, 2016

Sri Lanka - Two Months On!

It has been almost two months in Sri Lanka, after Unilever decided to send me to conquer this nation for the internship (just kidding!) And here I am with yet another blog post about the experience in a South Asian country unlike any other!

Apr 24, 2016

Sri Lanka: First Thoughts

It has been such a long time since I blogged that I feel something like this Led Zeppelin song - "been a long time, been a long time, been a long, lonely, lonely, lonely, lonely, lonely time!"


As I was racing towards the other terminal in Chennai, I suddenly realised what I had in store for me. Two months in a foreign country all alone - as if that was not enough, I hadn't slept the night earlier chatting up with some old friends and I was practically in a trance state. By this time, I realize the earlier sentence is getting too long and I need to abort, or risk failing the Flesch test.

Cutting to the chase, I am in Sri Lanka for my internship with Unilever (and I have been given a palatial bungalow - more on that in a later post). I will directly go down to the crux of the matter and let you know what surprised me the most (or least).

Mar 29, 2016

The WearYourStyle.in - TrendzVenue Scam - DO NOT BUY

A few weeks go, I saw an ad on Facebook for WearYourStyle.in and order 5 T-shirts for Rs. 1700. It took some time to get them, but to my surprise, I was shipped only 4 (even though the invoice mentioned 5 of them!)

I contacted their customer care through email (when you email contact@wearyourstyle.in, contact@trendvenue.com replies) they asked me which item was missing from my shipment. That was a week ago, and there has been no reply from this on this matter hence.

Sep 14, 2015

Kolkata #BergerXP IndiBlogger meet, Marketing Insights, and some Blogging Tips

4 years, 4 long years. That's how long Kolkata bloggers have been waited for a blogger meet. Thankfully, I am more of a Nomad and I visited the Kose IndiBlogger Meet, which coincided with my IIM Indore interview. Being that pseudo Kolkatan that I am, I knew about the rich heritage of the Oberoi Grand. Add to it the spice of an IB meet, and I knew missing it would be stupid. What's more? I got my mother into it too.

If you know me, you would probably know that I am a developer (yes, I still consider myself one!) and developers are introverts. Introverts are good at blending into a crowd, and not stand out. In the previous meet, I had done so successfully, and managed to talk to others too, but this time I had Mamma with me, which changed the dynamics.

Sep 4, 2015

I got Published!

The title says it all.

Wait, what?!? Published? Not self-published, I got published published. If memory serves me correctly, not long ago, I was struggling to complete those writing skill questions back in 12th standard. It's been a long journey since then!

Dec 31, 2014

How to use request.PUT or request.DELETE in Django

Those of you who use Django might know that using request.PUT or request.DELETE on Django doesn't work. This is because Django doesn't construct dictionaries for such "verbs", and you need to work with request.raw_post_data or request.body and parse it to get your data (Go ahead, give it a try, while I have a cookie!)

If you are creating a simple REST API, you are not going to have a good time unless you are working with a framework.

Wouldn't it be nice if you could use request.PUT just like the dicts request.POST and request.GET After finally searching online, I have stumbled upon a way to do just that.

You can find the code on BitBucket.

    if request.method == "PUT":
        if hasattr(request, '_post'):
            del request._post
            del request._files
       
        try:
            request.method = "POST"
            request._load_post_and_files()
            request.method = "PUT"
        except AttributeError:
            request.META['REQUEST_METHOD'] = 'POST'
            request._load_post_and_files()
            request.META['REQUEST_METHOD'] = 'PUT'
           
        request.PUT = request.POST

What you do here is simply change the request method back to POST, reload the variables and rename the request method and request.POST dictionary. A nice hack to get your job done.

Liked this post? Have any suggestions? Just let me know. Feel free to comment below!

Dec 11, 2014

Zico, the ISL and ATK

Zico might have been a great footballer, but the White Pele is perhaps one of the best players not to have won a World Cup ever. Maybe that's why he considers qualifying to the semi finals of the ISL as one of the greatest moments of his career. It's commendable how he has engineered the uphill task after a poor start by FC Goa to the tournament.

The moment I entered the Salt Lake Stadium, I knew the crowd wasn't going to let Zico go away with a victory, a result that would eliminate the home team Atletico de Kolkata out of the tournament. As the starting XI was being announced, the stadium cheered every name. The presence of 36 year old marquee signing Luis Garcia on the bench, raised doubts on his fitness, but Kolkata seemed to go with whatever they had.

Dec 10, 2014

And I'm back!

It's been a long time. A very long time indeed...

It's been so long that the once familiar Blogger interface seems alien to me. Due to my sabbatical, I must admit that I had thoughts of leaving this blog altogether and moving on to a new one, but recent events have convinced me otherwise.

Random people have asked me why I have stopped blogging. I had no idea so many people read this blog - and that they would miss my posts. But the one thing that wanted me to start writing again on this blog was during a job interview.

I had cleared the first level of interviews in a company, and the moment I walked into the room, one of the interviewers asked me - "How is your blog?" (The fact that I have neglected this blog in recent times might have contributed to me not making it to the said company.)

Apart from my readers reaching out to me in real life, I am going to start writing again because I am fresh out of the placement season at IIT Roorkee - a place where students are only as good as the packages they bag. I have a lot of things in mind - about the placement process, the selection procedure and a lot of other things - and I am going to share them on this blog soon (albeit in a safe way- to make sure I don't get in trouble with certain people).

To the readers, I would like to sincerely apologize because I have been away for a long time due to my own selfish reasons (the freelancing pays well, you know!) But watch this space, I am going to share my experience soon.

Liked this post? Have any suggestions? Just let me know. Feel free to comment below!

May 3, 2014

Swelling in your Galaxy S4's battery- here's how to get it replaced in India

Although the S5 is out, Samsung is probably still working hard to get the S4 issues fixed. After a rather late upgrade to Android Kit Kat, you must wonder how important this ex-flagship device is for Samsung. I usually write on cribbing issues, but here's one about a good thing- how I got my Galaxy S4 battery replaced in India.

The battery swelling issue has been well known in case of the S4 and Samsung has acknowledged this issue. In fact, it has been giving free replacements in some parts of Europe. Why not India then? Perhaps, the customers are spoilt kids who couldn't care less for a few thousand bucks?

Apr 1, 2014

Create your own basic lightbox with CSS and jQuery

If you Google "lightbox", you would be greeted by hundreds of plugins, each with its own speciality. Quite often, these plugins are very heavy and contain a lot of functionality that you would probably not require. In most cases, your requirements are very basic and you wonder if it's practical to use a heavy plugin to get the job done. In this tutorial, we will talk about creating your own basic lightbox plugin. Why carry the whole Swiss knife when you just need a pair of scissors?
The lightbox that we are about to create is inspired by the look of the lightbox in this tutorial by Script Tutorials. However, we will discuss it in such a way that enables you to re-use the code in further projects.

Mar 1, 2014

And they lived happily ever after... Really?

“And they lived happily ever after...”- takes me straight back to my childhood. Mamma by the side of your bed telling you how, against all odds, the princess was rescued; the good ol’ days. There was nothing to worry about, because deep down, I knew that everything would turn out to be all right! However, as the years passed by, I realized that the world was cruel- the thought of a happy “ending” is just a fluke. In fact, there’s no ending, and “ever after” is just a cliche used in fictional works!

Jan 31, 2014

10 Common Mistakes by WordPress Beginners

‘To err is human and to forgive divine.’ Committing mistakes is not a crime, however, not learning from your mistakes definitely is. If you are new to the world of WordPress, it might be intriguing for you to set everything up and your primary focus would be to get things running. In that process, there are quite a few things that you might ignore which would come back to haunt you in the long run. Here is a list of such common mistakes that beginners commit, which you must avoid at all costs.

Jan 18, 2014

The Dream

Five minutes left for the final whistle. Trailing by a goal in the Champions League Final in Munich, Torres is brought on for Kalou. The commentator promptly reminds us for the 645th time that for all the minutes Drogba and Torres have played together in the pitch for Chelsea, neither of them have scored. Torres manages to win a corner though, Mata approaches the corner flag to take it. As the ball curls in, Drogba gets free from his marker and heads the ball. Neuer gets to the ball, but it still goes in...

... and then the goddamn alarm goes off!

Dec 17, 2013

Of Elections in the Largest Democracy

A certain boy in a certain corner of the country once told his father, "I want to be a politician."
"Stop this nonsense and go back to study," came the reply.

Do you know what was the mistake of that kid? He was unfortunate enough to be born in India, ironically the world's largest democracy.

Dec 16, 2013

Math the #1 reason why we waste study time

We have all been in that situation. You fixed 6 PM as the time you would sit down to study, after watching that all important TV show. You feel lazy and switch off the TV five minutes late. You stretch your limbs, have a soft drink, check your texts and before you realize, it’s 6.15 already. You decide to start off at 6.30 with a fresh mind. Although you wasted half an hour, you would still get off at 8 for the birthday party of your friend.

Dec 15, 2013

5 Must-Have Android Apps


I wouldn't bore you with my story of the ChaCha, how it (or rather HTC) betrayed me (Yes, HTC has pathetic after-sales service), or how I got my hands on a shiny new Galaxy S4 (or perhaps, I already have!) Let's just cut on to what I am about to tell you. Back to using the Android for over a month now, here are my favorite apps!

The Tablet Times

With the microprocessor chips getting more powerful, yet smaller, smaller devices are getting smarter and more capable of doing things that couldn't be imagined even a few years ago. Could you imagine coming home late from work, sending a signal to your television to automatically start recording your favorite program? Well, the things that we can do are going beyond our imagination!

As of late, I have been doing some things with my Android device which has succeeded to make life difficult for others. Did I tell you about the time that I switched off the canteen TV with my Android device? (Yes, it has an infrared sensor which does the trick!) The bewildered look on the canteen owner’s face with bulging white eyeballs was priceless! There was this other time when I used a Bluetooth mouse to control my Android device because I was too damn bored of the touch-screen. Those may be interesting times, but what I am about to tell you is far more exciting…

Dec 1, 2013

Wlinkster's new scam

Over the past few weeks, I have been doing some freelancing, due to which my blog hasn't got my attention as much as it used to in the past (when I had a lot of free time), but today, being a Sunday, I thought let's give it some well deserved attention. Although I wasn't going to write on Wlinkster and Sagar Rana, a message in Facebook compelled me to tell the people what exactly the Wlinkster team has been doing since their "high potential" startup literally failed (who boasts of an Alexa rank now?)