AI for Freelancers and Small Businesses in Pakistan
For a freelancer in Karachi or a small shop in Lahore, AI is most useful as a tireless assistant for writing, customer replies and repetitive work.
Where AI Really Helps
| Who | Useful tasks | Still needs a human |
|---|---|---|
| Freelance writer | Outlines, first drafts, rewriting, proofreading | Facts, voice, final quality |
| Freelance developer | Boilerplate, tests, explaining old code, documentation | Design, security, client communication |
| Designer | Ideas, mood boards, quick variations, copy for designs | Final design, brand fit, licences |
| Online shop | Product descriptions, replies to common questions, translations | Prices, stock, refunds, complaints |
| Tutor or institute | Practice questions, lesson plans, simple explanations | Checking answers, teaching, marking |
| Office work | Summaries of long emails and reports, formulas for Excel | Decisions and anything sent in your name |
Selling AI Services Honestly
On freelancing platforms, clients increasingly ask for AI-related work. Services that small businesses actually pay for:
- A website or WhatsApp FAQ chatbot built with RAG on the shop's own information (see the Chatbots Tutorial)
- Product listings written in bulk for an online store
- Data cleanup: turning messy order messages into a clean spreadsheet with structured output
- Automations: "when a form is filled, draft a reply and save the lead"
- Training staff to use AI tools safely
Be honest with clients. Do not promise "AI will replace your staff" or "100% accurate answers". Promise a tool that saves time, with a human checking important replies.
Read the platform's rules and the client's rules about AI. Some clients do not allow AI-written work, and passing it off as fully hand-made can cost you your account and reputation.
Example: Bulk Product Descriptions
A clothing shop has 300 products in a spreadsheet and no descriptions. First, build one clear prompt per row. This part runs offline:
Example
import csv, io
products_csv = """name,material,price
Embroidered lawn kurta,cotton lawn,3200
Kids school shoes,synthetic leather,2400
"""
rows = list(csv.DictReader(io.StringIO(products_csv)))
def make_prompt(p):
return (f"Write a 40-word product description for an online shop in Pakistan. "
f"Product: {p['name']}. Material: {p['material']}. Price: Rs {p['price']}. "
f"Simple English, no exaggeration, end with a call to order on WhatsApp.")
for p in rows:
print(make_prompt(p))Write a 40-word product description for an online shop in Pakistan. Product: Embroidered lawn kurta. Material: cotton lawn. Price: Rs 3200. Simple English, no exaggeration, end with a call to order on WhatsApp. Write a 40-word product description for an online shop in Pakistan. Product: Kids school shoes. Material: synthetic leather. Price: Rs 2400. Simple English, no exaggeration, end with a call to order on WhatsApp.
Then send each prompt to the API with the code from Calling AI APIs and save the replies in a new column:
Example
import csv, os
from openai import OpenAI
client = OpenAI(base_url=os.environ["AI_BASE_URL"], api_key=os.environ["AI_API_KEY"])
def make_prompt(p):
return (f"Write a 40-word product description for an online shop in Pakistan. "
f"Product: {p['name']}. Material: {p['material']}. Price: Rs {p['price']}. "
f"Simple English, no exaggeration, end with a call to order on WhatsApp.")
with open("products.csv", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
for p in rows:
response = client.chat.completions.create(
model=os.environ["AI_MODEL"],
messages=[{"role": "user", "content": make_prompt(p)}],
temperature=0.7,
max_tokens=120,
)
p["description"] = response.choices[0].message.content.strip()
with open("products_with_descriptions.csv", "w", newline="", encoding="utf-8") as f:
writer = csv.DictWriter(f, fieldnames=list(rows[0].keys()))
writer.writeheader()
writer.writerows(rows)
print("Done:", len(rows), "products")Notice that the price comes from the spreadsheet, not from the AI. Read a sample of the results before uploading them to the store.
Know Your Costs in Rupees
API usage is billed in US dollars per million tokens, so convert to rupees before you quote a monthly price to a client. The prices and dollar rate below are example numbers only:
Example
# Example numbers only: check your provider's real prices and today's dollar rate
PRICE_PER_MILLION_INPUT_USD = 0.50
PRICE_PER_MILLION_OUTPUT_USD = 2.00
USD_TO_PKR = 280
def monthly_cost_rs(chats_per_day, input_tokens, output_tokens, days=30):
chats = chats_per_day * days
usd = (chats * input_tokens / 1_000_000) * PRICE_PER_MILLION_INPUT_USD \
+ (chats * output_tokens / 1_000_000) * PRICE_PER_MILLION_OUTPUT_USD
return round(usd * USD_TO_PKR)
print("Small shop, 50 chats/day: Rs", monthly_cost_rs(50, 1500, 200))
print("Busy shop, 500 chats/day: Rs", monthly_cost_rs(500, 1500, 200))Small shop, 50 chats/day: Rs 483 Busy shop, 500 chats/day: Rs 4830
Each chat here sends about 1,500 input tokens (instructions, history and retrieved documents) and gets 200 tokens back. Your real numbers come from the usage field in API replies. Add your own time for setup and maintenance on top.
Practical Tips for Pakistan
- Payments: international API billing needs a card that works for online foreign payments. Check with your bank, and set a spending limit.
- Language: customers write in English, Urdu and Roman Urdu, often mixed. Test your bot with real messages in all three.
- Internet and power: for important workflows, have a manual backup plan when the internet or electricity fails.
- Privacy: do not paste customers' CNIC numbers, phone numbers or bank details into AI tools. See Privacy and Your Data.
- Free tiers change: free plans and limits change often. Do not build a client's business on a free plan.
Exercise
Exercise
In the bulk product description script, where should the price in each description come from?
