AI tools that
actually get used.
I'm Ishan. I build AI tools that run on a company's own information, then stay to keep them running in production. To see one live, paste any website below and a working chatbot is built from it in about a minute, with your branding. It's yours to keep.
Consultancies and product teams.
If you sell AI delivery and have more signed work than people to do it, I can join as extra capacity. Product teams use me the same way: one scoped build, delivered working, documented and handed over.
Chatbots for marketing agencies.
Marketing agencies wanted to offer AI chat to their clients, and their clients wanted it. The blocker was cost: each chatbot took around two weeks of manual setup, which made it too expensive to sell.
So I automated the setup. The system reads a client's website, learns what the business does and builds a working chatbot from it, including the client's branding. Nothing is configured by hand.
Setup went from about two weeks of engineering to about five minutes, so an agency could switch it on for a client instead of scoping a project. Ten businesses ran it live on their sites. The build demo at the top of this page is the same system.
From £250 a day.
Remote, UK hours. Part-time retainers available. Tell me what's stuck and I'll tell you whether I can ship it.
Three ways to see how it works inside.
A chatbot answers questions. An agent can also act: look things up, check a calendar, book an appointment. This one runs a pretend dental clinic. Give it a job and some tools, then watch each step it takes, including when it gets stuck and tries another way. It all runs in your browser.
Try the agent sandbox →There's more than one way for a bot to find the right answer. Here are three, run on the same questions and scored side by side. Sometimes the fancier one loses.
See the comparison →A visual glossary of the basics behind a production chatbot, from a single token to a team of agents, each with a small animation.
Open the cheatsheet →The pipeline, taken apart.
Five stages turn a URL into a chatbot. Here is each one, slowed down, using an imaginary bookshop as the example.
A site becomes passages.
The scraper pulls your pages down as clean text, and the text is cut into overlapping passages. The overlap stops an idea from being split in half at a passage boundary.
Firecrawl returns each page as structured markdown. LangChain's RecursiveCharacterTextSplitter then cuts it into 2,000-character passages that overlap by 150 characters.
Passages become coordinates.
An embedding model turns each passage into a long list of numbers: a point in a space where meaning is distance. Passages about shipping land near other passages about shipping, whatever words they use.
Each passage goes through OpenAI's text-embedding-3-small and comes back as a 1,536-dimensional vector. The vectors are stored in Pinecone under one namespace per bot, so retrieval never crosses between customers.
A question reaches into the space.
When a customer asks the bot something, the question is embedded into the same space, and the nearest passages are pulled out and handed to the model. The model can only answer from what it's given, so retrieval quality decides answer quality.
The question is embedded the same way, and Pinecone returns the passages with the highest cosine similarity. We also built a hybrid retriever that adds keyword matching (BM25) and measured it against the simple one. The results are in the next section.
The widget picks up your brand colors.
Every pixel in a screenshot of the site is a point in color space. Cluster those points and the cluster centers are the brand palette. That's k-means, and this demo runs it live in your browser.
In production this ran as a Puppeteer service: screenshot the site, sample the pixels, cluster with k-means (k=3) and keep the dominant center as the accent. We retired the service to cut hosting costs, and the widget now reads colors from the page HTML.
It learns who it works for.
Last step: GPT reads what was scraped and writes the bot's system prompt, which sets its tone, scope and fallbacks, plus its welcome message. When you build a bot above, the prompt shown in the editor is this step's real output.
Two gpt-4o-mini calls run in parallel, one writing the system prompt and one writing the welcome message, both in the language the site was detected to use.
How we test it.
A chatbot is only as good as the passages it retrieves. Give the model the wrong context and it answers confidently from the wrong facts. So we built an eval harness: questions with known correct sources, scored against every retrieval strategy we considered. Three results shaped the product.
The fancier retriever lost, so we don't use it.
| metric | dense | hybrid |
|---|---|---|
| hit rate | 1.000 | 1.000 |
| MRR | 0.975 | 0.829 |
| recall@1 | 0.950 | 0.700 |
| recall@3 | 1.000 | 0.950 |
recall@1 measures how often the correct passage is the first one given to the model. Plain embedding search scored 95%. Adding keyword search (BM25, fused by rank) pulled lookalike passages up and pushed the right one down to 70%. So the bots built here use plain dense retrieval, and hybrid stays off until a corpus needs it. Measured on 53 chunks and 20 questions.
We had to fix the test before it measured anything.
Same pipeline, same corpus, three question sets. The first set was written from imagination and scored 24%, because the answers we expected weren't in the corpus. Once the questions were written against what was actually indexed, the score meant something. Every eval since starts by checking the test data.
Graded on its actions as well as its answers.
The agent version of the bot can check a calendar, send a WhatsApp alert and place a call. Each test scenario lists the tools it must and must not use. The first run failed 17% of scenarios: on hot leads the agent invented a booking date and skipped the required follow-up call. A two-line prompt fix took it to 100%. The whole suite costs about $0.002 to run, so it reruns on every change.
In practice, a bot built on this page starts its answer from the right passage about 95 times in 100.
Built by Ishan Sharma.
Ex-Amazon engineer with a computer science degree from UofT. I built Bloort as founder and product lead, from the ingestion pipeline and retrieval stack to the agent, the eval harness, the dashboard and this page, with a small part-time team. It ran on ten live client sites and still works, so the homepage lets you try it.
More of my work is on my portfolio.
ishan.website