Company A — Middle AI/Python Engineer — prep map

Updated 11 min read source
On this page13
  1. The ad, decoded
  2. 🔴 Production Python
  3. 🔴 LLMs / VLMs in production — the things only production teaches
  4. 🔴 Open-weight VLMs — strengths and failure modes
  5. 🔴 Structured extraction
  6. 🔴 Fine-tuning — LoRA / QLoRA / PEFT
  7. 🔴 Deployment and serving
  8. 🟡 Classical CV, layout detection, OCR
  9. 🟡 Agentic frameworks, RAG, vector databases
  10. 🟡 MLOps — MLflow / W&B, CI/CD for models
  11. 🟡 Presales and estimation
  12. The design question to rehearse
  13. Behavioural — the Company A values as stories

Company A — Middle AI/Python Engineer — prep map

Checklist format: tick what you can explain and defend under questioning, not what you have used. Bold is the primary note; the rest add depth.

Priority: 🔴 core (in the requirements, will be probed) · 🟡 nice to have (in the ad, lighter) · 🟢 breadth (implied)


The ad, decoded

Requirement What they will actually probe Weight
4+ years production Python: FastAPI/async, PostgreSQL, queues, Docker a pipeline with GPU workers, idempotent retries, a DB schema 🔴
2+ years LLMs/VLMs in production incidents, evals, cost — things only production teaches 🔴
Open-weight VLMs: Qwen2.5-VL / Qwen3-VL, InternVL, Llama Vision, Pixtral what each is built for, licences, failure modes with mitigations 🔴
Structured extraction: JSON-schema, constrained decoding, scans/PDFs/forms, validation the extraction pipeline end to end, what the grammar does not guarantee 🔴
Fine-tuning: LoRA / QLoRA, PEFT what to adapt on a VLM, data, resolution skew, merge-then-quantise 🔴
Serving: vLLM / SGLang / Triton, AWQ / GPTQ / FP8, batching, KV cache, GPU sizing vs SLA and budget the flags, the memory arithmetic, a GPU count with assumptions 🔴
Classical CV: OpenCV, DocLayout / Surya, PaddleOCR / Tesseract, YOLO when OCR beats the VLM; the hybrid 🟡
LangGraph, RAG, vector DBs one solid design each 🟡
MLOps: MLflow / W&B, CI/CD for models registry, eval gate, shadow/canary 🟡
Presales or estimation a scoped pilot with numbers 🟡

The product this ad describes: document extraction at volume on self-hosted VLMs — scans, PDFs and forms in; validated JSON out; with a GPU bill and an SLA. Everything below is that system; the section “The design question” walks it end to end.


🔴 Production Python


🔴 LLMs / VLMs in production — the things only production teaches


🔴 Open-weight VLMs — strengths and failure modes

  • How a VLM sees — encoder–projector vs cross-attention, resolution strategies, the token arithmetic (one token per 28×28 block on Qwen; an A4 scan is 1,260 tokens at the recommended budget, 11,000+ at the default)How a VLM sees an imageMultimodal modelsKV cache
  • The landscape — Qwen2.5-VL / Qwen3-VL, InternVL 3/3.5, Llama 3.2 Vision (and its EU licence clause), Pixtral / Mistral Small, Gemma 3; the document-OCR VLMs; benchmarks and why DocVQA is saturatedOpen-weight VLMs: the landscape
  • Failure modes, each with a mitigation — hallucinated absent fields, small print lost to the pixel budget, counting and coordinates, repetition loops on tables, rotation, multi-page context, injection through image text, drift from engine and checkpoint changesVLM failure modes in productionHallucinations and toolsPrompt injection

The line the ad is testing for: first-hand experience of where these models do well and where they break, not just book knowledge. Have three war stories in the shape symptom → cause → fix → what we measured after: the invented total (nullable fields + evidence quotes + arithmetic checks), the repeated table row (loop detection while streaming + split the table), the accuracy drop nobody could explain (resolution skew between fine-tune and serving).


🔴 Structured extraction


🔴 Fine-tuning — LoRA / QLoRA / PEFT


🔴 Deployment and serving

  • The engines — vLLM as the default, SGLang, TensorRT-LLM behind Triton; continuous batching, PagedAttention, prefix caching, chunked prefill, speculative decodingBatching and serving enginesModel export and runtimesInference basics
  • Serving a VLM — max_pixels and images-per-request capped server-side, max-model-len from real pages, FP8 KV cache, prefix caching with stable text before the image, the CPU preprocessing bottleneck, replicas over TPServing VLMs
  • Quantization — AWQ / GPTQ int4, FP8 on Hopper/Ada, what degrades first; quantise the LLM, keep the encoder in bf16QuantizationServing VLMs(§ Memory, and therefore concurrency)
  • KV cache arithmetic — bytes per token = 2 × layers × kv_heads × head_dim × dtype; pages in flight from what is left after the weightsKV cacheAttention mechanisms (GQA / MLA)
  • Sizing GPUs against an SLA and a budget — three measured numbers, a worked count, the latency budget as a decode problem, self-host vs API break-even, how to say it to a clientSizing GPUs against an SLA and a budget

Numbers to say without looking: Qwen3-VL-8B ≈ 16 GB bf16 weights; KV ≈ 147 KB/token → ~190 MB per 1,300-token page → ~290 pages in flight in 55 GB, double with FP8 KV. 300k pages/day at a 3× peak is ~10 pages/s → about three H100s at 70% utilisation plus one spare; ~$0.70 per 1,000 pages on-demand versus ~$4 on a hosted API. Single-stream decode of 400 tokens at 80–120 tok/s is 3–5 s — a p95 SLA is met by shortening the output, not adding GPUs. All illustrative; the method is the answer.


🟡 Classical CV, layout detection, OCR


🟡 Agentic frameworks, RAG, vector databases


🟡 MLOps — MLflow / W&B, CI/CD for models


🟡 Presales and estimation


The design question to rehearse

“Design invoice extraction for 300k pages a day with a 15-minute turnaround.” Walk it in this order:

  1. Ingest → object storage → queue; content hash as the idempotency key at every stage — Structured extraction, Celery idempotency.
  2. Preprocess: text layer first, render at 200–300 dpi, orientation, page classification, max_pixels chosen on purpose — How a VLM sees, Layout and OCR engines.
  3. Extract with Qwen3-VL-8B on vLLM: nullable schema with evidence quotes, constrained decoding, OCR text alongside the image — Serving VLMs, Constrained decoding.
  4. Validate: format → evidence → business rules → calibrated logprobs; auto-approve or route to review; the review rate is the product metric — Structured extraction (§ Post-processing and validation).
  5. Size it: tokens per page × measured throughput × peak ratio ÷ 0.7 + 1 spare; quantise before adding GPUs; separate batch and online pools — Sizing GPUs.
  6. Evaluate and improve: golden set from the pilot, straight-through rate, corrections into a LoRA fine-tune, merged and quantised and re-evaluated, promoted through the eval gate — Evaluating extraction, Fine-tuning VLMs, CI/CD for models.

Then name the failure modes unprompted — VLM failure modes — and the licence check before any demo — The landscape.


Behavioural — the Company A values as stories

Value Story to have ready Notes
Growth the model family you learned last quarter and what changed in your pipeline because of it Approaching new technologies · How do you work with AI
Teamwork an estimate you defended with data, a review that changed a design Disagreement with the team · Leading technical direction
Ownership an AI incident you owned — the wrong total that got paid — and the validation rung added after A failed project or mistake · AI incident response
Openness telling a client the accuracy number and the review rate before they asked Working with clients · Presales and scoping
Results a per-page cost or review rate you moved, with the number Strongest project · The six signals
  • Questions to ask them, and the red flags — which VLMs they run today, GPU ownership, who labels, what the review rate isClosing questions and red flags

English: rehearse the design walk-through and the three war stories aloud, in English; the ad’s commercial-experience requirement is checked by asking for numbers, and numbers are easier to say than to improvise.