Making your digital AI clone

Making your digital AI clone — Reply your WhatsApp chat like you do

Can an AI reply exactly like I would?

I wanted to find out.

One day while using WhatsApp the lazy me thought to build my clone — one that understands my texting style, the phrases I frequently use, my shorthand, and even my personality while chatting with someone.

Fine tuning Qwen or Gemma model on my exported WhatsApp conversations with a specific person was the way I found. The result is a model that can generate replies that closely resemble how I usually respond ( odd replier ).

The Idea

Most AI assistants are trained to sound helpful and professional.

But none of them text exactly like me.

The unique way of chatting:

So I wondered:

Can a Small Language Model learn my texting personality?

Turns out…

Yes (kinda similar , but needs improvement).

What I needed

Dataset

The training data came from an exported WhatsApp chat with one person.

Instead of training on general conversations, I only wanted the model to learn how I reply.

So I converted the conversation into instruction-style samples.

Example:

### InputThem:
Aa rha h kl?### OutputMe:
Yeah probably 😂
Btata hu me, ruk.

Each example teaches the model:

Over thousands of messages, the model starts learning my style.

Data Cleaning

Raw WhatsApp exports contain lots of noise.

Some preprocessing included:

Clean data. Although WhatsApp don’t give you the message tagged in a particular reply in export and it creates a lot noisy training as well — a definite impact. But thought let’s first go ahead.

Why Qwen 2.5 SLM?

I wanted something:

Qwen 2.5 SLM was a perfect fit because it performs surprisingly well despite its size.

Smaller models are also much easier to fine-tune on Google Colab.

Why Unsloth?

Training LLMs normally requires a lot of GPU memory.

Unsloth makes fine-tuning significantly easier by:

That meant I could train everything on Google Colab without expensive hardware.

Fine-Tuning

I used LoRA fine-tuning instead of updating every model parameter.

This makes training:

Only a small number of parameters are trained while the original model stays mostly frozen.

The Workflow

WhatsApp Export
        │
        ▼
Clean Dataset
        │
        ▼
Prompt → Response Pairs
        │
        ▼
LoRA Fine-tuning (Unsloth)
        │
        ▼
Trained Adapter
        │
        ▼
Inference

Inference

After training, using the model is simple.

Instead of giving a random prompt, I provide the latest message from the conversation.

Example:

### Input 
Them:
You forgot to reply 

The model generates something like:

Arrey sorry 
Got busy yaar.
What's up now?

Another -

### Input 
Them:
I Love you

image

Instead of sounding like ChatGPT, it sounds much closer to how I usually text.

What It Learned

The model gradually picked up things like:

It doesn’t memorize every conversation.

Instead, it learns statistical patterns in how I communicate.

Limitations

This is style transfer, not personality transfer.

The model can imitate how I write.

It does not:

It’s still generating text based on learned patterns. Also

Thanks for reading!