The API Call Is Not the Hard Part
The OpenAI documentation is excellent. Getting a response from GPT-4 takes about twelve lines of code. Most people who describe themselves as LLM developers have done at least this.
What separates a developer who has called the API from one who has built a production LLM application is everything that happens around the API call: how you get the right information into the context, how you structure the prompt to get consistent output, how you handle failure, how you evaluate whether the system is working correctly, and how you manage cost and latency at scale.
These are engineering problems that require genuine depth. A solo consultant who spent a weekend integrating GPT into a Notion template is not the same as someone who has shipped a document processing pipeline that handles 40,000 pages a month without producing legally dangerous output. This post explains what the real work involves and why it matters when you are deciding who to hire.
What an LLM Developer Actually Does
Retrieval-Augmented Generation (RAG)
Most business LLM applications cannot just send a user's question to an LLM and hope it knows the answer. The LLM needs relevant information from your company's data — documents, policies, product catalogues, historical records.
RAG is the architecture for doing this. Documents are chunked into segments, converted into vector embeddings, stored in a vector database (Pinecone, Weaviate, pgvector, Chroma, or others), and retrieved based on semantic similarity to the user's query. The retrieved content is assembled into the LLM's context alongside the user's question.
Building a RAG system that retrieves accurately is significantly harder than it looks. Chunking strategy — how you divide documents — determines whether retrieval finds the right segments. A 500-token chunk from the middle of a 20-page compliance document often loses the surrounding context that gives it meaning. Embedding model choice determines the quality of semantic matching. Reranking, filtering, and hybrid search (combining semantic and keyword search) are often necessary to get acceptable retrieval quality.
Consider a 12-person law firm that wants an internal assistant to answer questions about their matter files and precedents. A naive implementation chunks every PDF at fixed intervals, embeds them with a general-purpose model, and retrieves the top five chunks by cosine similarity. In testing, this looks fine — simple questions get reasonable answers. In production, an associate asks about a specific clause in a contract negotiated three years ago. The retrieval surfaces four tangentially related chunks and one from a different matter entirely. The assistant synthesises a confident but incorrect answer. That is not a minor bug. Poorly built RAG systems return plausible-sounding but incorrect answers, which is worse than no AI at all.
Prompt Engineering
Getting reliable, structured output from an LLM requires precise prompt design. The difference between a prompt that works 80% of the time and one that works 99% of the time is often significant in production.
Good LLM developers know how to structure prompts to elicit consistent output formats, how to use system prompts to constrain model behaviour, how to handle edge cases, and how to use techniques like chain-of-thought prompting when reasoning quality matters.
They also know how to test prompts systematically — against representative inputs, edge cases, and adversarial examples — rather than tweaking until a few examples look good. A prompt that produces clean JSON 95% of the time will fail roughly 1-in-20 calls. At 10,000 daily queries, that is 500 broken responses per day. Good prompt engineers instrument this, measure it, and iterate until failure rates are acceptably low — typically below 0.5% for anything downstream systems depend on.
Output Parsing and Validation
LLM outputs are text. Business systems need structured data. Bridging these two requires robust output parsing — extracting structured information from free text — and validation — checking that the output is actually what was expected.
This means defining schemas for what the output should look like, writing parsing logic that handles variations in how the LLM formats its response, and validating that the extracted data makes sense before passing it to downstream systems.
Pydantic, function calling, and tool use in modern LLMs help with this significantly, but they do not eliminate the need for careful validation engineering. An insurance claims processing system that extracts date, policy number, and incident type from uploaded forms needs to validate that the extracted date is plausible, the policy number matches a known format, and the incident type maps to an accepted category — before any of that data touches the claims database. Skipping these checks because "the LLM usually gets it right" is how data quality problems accumulate silently over months.
Model Selection and Cost Management
GPT-4o is not always the right model. For many tasks, GPT-4o Mini, Claude Haiku, or Gemini Flash are significantly cheaper and fast enough that the latency difference matters for user experience. For some tasks, a fine-tuned smaller model outperforms GPT-4o at a fraction of the cost.
A good LLM developer thinks carefully about model selection: which model is required for quality, which is sufficient for cost, and where the trade-off falls for a given use case. At scale, model cost is a real operational expense.
A concrete example: a UK-based e-commerce business processing 50,000 customer service messages per month using GPT-4o for every interaction spends roughly £3,000–£5,000 per month in API costs alone, depending on message length. Using GPT-4o Mini for triage (classifying whether the message is a return request, shipping query, or complaint) and only escalating to GPT-4o for complex drafting reduces that bill by 60–70% with no meaningful drop in output quality. A developer who does not think this way will cost you money every month.
Evaluation
How do you know if your LLM application is working? This is genuinely hard. LLM outputs are probabilistic and often subjective. "Does this response seem good?" does not scale to production systems that handle thousands of queries a day.
Production LLM applications need systematic evaluation: test sets of representative queries with expected outputs, automated metrics where they apply (factual accuracy, citation accuracy, output format adherence), human evaluation workflows for qualitative assessment, and regression tracking so you know when a model update or prompt change has degraded performance.
Building this evaluation infrastructure is often 20–30% of the engineering effort on a serious LLM project and frequently the part that gets skipped, leading to systems that seemed to work in testing and degraded silently in production. When OpenAI released a model update in early 2025, several companies discovered their carefully tuned prompts no longer produced consistent output formats — only those with regression test suites caught the problem within hours rather than weeks.
Observability
LLM applications fail in ways that are hard to diagnose without good logging. A query that returns a wrong answer — why? What was retrieved? What was in the context window? What did the prompt look like? What did the raw model output look like before parsing?
Good LLM developers instrument their systems to capture this information for every request, making debugging a matter of inspection rather than guesswork. Tools like LangSmith, Weights & Biases, and custom logging pipelines serve this purpose. At a minimum, every LLM request should log: the full prompt (or a hash of it), the raw model response, the retrieved context if RAG is involved, the parsed output, latency, token counts, and model version. Without this, diagnosing a spike in incorrect responses is like trying to fix a car without lifting the bonnet.
The Difference Between Fine-Tuning and RAG
A common question from clients is whether to fine-tune a model or use RAG. The answer is usually RAG, at least initially, and for specific reasons:
Fine-tuning updates the model's weights using examples of desired behaviour. It is useful for teaching the model a consistent style, improving performance on a specific task type, or internalising a very large amount of information that cannot fit in a context window efficiently. Fine-tuning requires hundreds to thousands of high-quality examples, takes time to prepare and run, and produces a static model that does not update when your data changes.
RAG retrieves relevant information at query time. It is easier to update (change the documents, not the model), more transparent (you can see what was retrieved), and handles dynamic information much better than fine-tuning. If your product catalogue changes weekly, RAG is the only practical architecture — re-fine-tuning every time a product is discontinued is not viable.
Most business AI applications benefit more from good RAG than from fine-tuning, at least until they have enough usage data to identify where fine-tuning would meaningfully improve performance. A reasonable decision tree: start with RAG, run it in production for 90 days, collect the cases where it consistently underperforms, and then evaluate whether fine-tuning on those failure cases improves things.
Off-the-Shelf vs Custom-Built LLM Applications
| Factor | Off-the-shelf AI tool | Custom-built LLM application |
|---|---|---|
| Time to first use | Hours to days | Weeks to months |
| Integration with your data | Limited or none | Deep, purpose-built |
| Control over prompts and behaviour | None | Full |
| Cost at scale | Per-seat SaaS pricing grows fast | Infrastructure cost, fixed engineering |
| Ability to customise output format | Minimal | Complete |
| Vendor lock-in | High | Moderate (model provider) |
| Evaluation and regression testing | Not available | Built to your requirements |
| Suitable for regulated industries | Often not | Can be built to comply |
The off-the-shelf route makes sense for simple, general tasks where your data does not need to be in the loop and the SaaS pricing stays manageable. Once you need your own documents in context, consistent structured output for downstream systems, or compliance controls, you need a custom build.
What to Expect in Practice
A realistic LLM project for a business — say, an internal document assistant for a 50-person professional services firm — typically looks like this:
Weeks 1–2: Discovery and data audit. What documents exist, in what formats, with what access controls? This phase often surfaces problems: PDFs scanned without OCR, SharePoint permissions that prevent programmatic access, documents in ten different naming conventions. A good developer flags these before writing a line of code.
Weeks 3–5: RAG pipeline build. Ingestion, chunking, embedding, storage, retrieval. Also the first version of the evaluation test set — 50–100 representative queries with expected answers, assembled with input from the firm's staff.
Weeks 6–8: Prompt design, output validation, and systematic evaluation. Iterating until retrieval precision and answer quality meet agreed thresholds.
Weeks 9–10: Observability instrumentation, load testing, and production deployment. Establishing alerting for failure rates and latency.
Ongoing: Monitoring, prompt updates when model providers release new versions, retrieval quality reviews as the document corpus grows.
This is not a two-week job. Anyone promising a production-ready internal assistant in two weeks is either cutting corners you will pay for later or has not understood the scope.
Common Mistakes When Building LLM Applications
Skipping evaluation until after launch. The most common and most expensive mistake. Without a test set, you have no idea what you are shipping. Build the evaluation set before you build the pipeline.
Treating hallucination as a prompt problem. Hallucination is a retrieval problem as much as a prompt problem. If the right information is not in the context, the model will fill the gap. The fix is better retrieval, not more aggressive prompt instructions.
Not planning for model updates. Model providers update their models. Prompts that work with GPT-4o today may behave differently after the next update. If you have no regression suite, you have no early warning system.
Using a single chunking strategy for all document types. Legal contracts, product specifications, FAQ pages, and financial reports have very different structures. A chunking strategy that works well for one will fail on another.
Ignoring cost until the invoice arrives. Token costs compound fast. A system that works beautifully in development with 100 test queries behaves very differently when 500 users are making 20 queries each per day. Model selection and caching strategies should be part of the architecture from the start.
What to Ask an LLM Developer
- How do you structure retrieval for a large, heterogeneous document corpus? What chunking strategy do you use and why?
- How do you evaluate whether your RAG system is retrieving correctly? What does your test set look like?
- How do you handle hallucination? What do you do when the model does not have enough information to answer accurately?
- How do you manage LLM cost at scale?
- What does your observability stack look like?
These questions surface whether someone has built real systems or just called an API.
Related guides
- LLM integration guide for business applications
- How to build a RAG chatbot step by step
- AI developer vs ML engineer: who you actually need
- What is an LLM? A plain-English guide
- Hire dedicated LLM & AI engineers
- LLM integration services
What We Build at Woyce
We build LLM applications for businesses — RAG pipelines, document processing workflows, conversational agents, and AI-powered features in web applications. We have shipped production systems, built evaluation infrastructure, and dealt with the failure modes that only appear under real usage.
Tell us what you are trying to build and we will tell you what the right approach is.
Frequently Asked Questions
What does an LLM developer actually do day-to-day?
An LLM developer designs and builds the systems around the language model — retrieval pipelines, prompt logic, output parsing, evaluation frameworks, and observability infrastructure. The API call to the model itself is a small fraction of the work. Most of the day involves debugging retrieval quality, writing and testing prompts, building validation logic, and reviewing evaluation metrics.
How long does it take to build a production LLM application?
A focused internal tool — such as a document assistant for a professional services team — typically takes 8–12 weeks to reach a production-ready state. That includes data ingestion, RAG pipeline build, evaluation, observability, and deployment. Anything significantly faster is likely skipping evaluation or ignoring edge cases that will surface in production.
What is the difference between an LLM developer and a machine learning engineer?
An ML engineer typically works on training, fine-tuning, and deploying models — the statistics and infrastructure behind learning systems. An LLM developer focuses on building applications with pre-trained models: retrieval, prompt design, integration, and evaluation. The skills overlap but are not the same. For most business AI projects, you need an LLM developer, not an ML engineer.
How much does it cost to build a custom LLM application?
A well-scoped internal tool for a small to mid-size business typically runs between $25,000 and $80,000 USD for initial build, depending on complexity, number of integrations, and evaluation requirements. Ongoing costs include infrastructure (vector database, hosting), model API fees (which vary dramatically depending on query volume and model choice), and maintenance. Off-the-shelf tools are cheaper upfront but rarely fit once your own data needs to be in the loop.
How do you prevent an LLM from making things up?
Hallucination is primarily a retrieval problem, not a prompt problem. The model invents answers when the correct information is not present in its context. The solution is a well-built RAG system that retrieves accurate, relevant content before the model responds — combined with validation that checks the model's answer against the retrieved sources. Prompt instructions like "only answer from the documents" help, but they do not substitute for good retrieval.
When does fine-tuning make sense over RAG?
Fine-tuning makes sense when you need to teach the model a very specific output style, when you have a large volume of task examples the model consistently gets wrong, or when your information corpus is too static and large to retrieve from efficiently. It requires hundreds to thousands of labelled examples and ongoing effort to maintain. For most businesses starting out, RAG delivers better return on investment and is far easier to update as your data changes.
How do you evaluate whether an LLM application is working correctly?
You build a test set: a curated collection of representative queries with expected outputs, assembled before the system goes live. Automated metrics track output format adherence, factual accuracy against retrieved sources, and latency. Human review handles qualitative assessment of tone, completeness, and correctness on complex queries. Regression tracking compares metrics over time so model updates or prompt changes that degrade performance are caught immediately rather than discovered through user complaints.
