Your Chat Logs Are Not a Training Dataset

Your Chat Logs Are Not a Training Dataset

July 13, 2026
10 min read
0xglu
TrainingOpen SourceLLMsAgentsEvaluation

The first question most developers ask about model training is:

Which algorithm should I use?

SFT? DPO? GRPO? Some new loss function that appeared on arXiv last week?

That is usually the wrong first question.

If you have months of conversations with models, you already have something valuable. The logs contain requests, attempts, corrections, tool calls, tests, and accepted outcomes. But they do not yet tell you what behavior should move into model weights.

The better question is:

I keep doing this. Can a smaller model learn the stable part—and can I prove that it did?

That shift matters more than the optimizer. It turns model training from an infrastructure project into a task-authoring problem.

A conversation contains several different kinds of signal

Imagine you have 500 chats about reviewing pull requests. They may contain:

  • current facts about a codebase;
  • stable preferences about what your team considers risky;
  • examples of good and bad review comments;
  • tests that prove whether a proposed fix worked;
  • tool-use trajectories through GitHub and a shell; and
  • one-off debugging sessions that will never repeat.

Those signals should not be flattened into one JSONL file.

Changing repository state belongs in retrieval and tools. Accepted review comments may become supervised examples. Before-and-after corrections may become preference pairs. Test results can become rewards. Long debugging trajectories may require a replayable agent environment rather than a text-only fine-tune.

The first job is to identify the repeated unit of work.

Given: a pull request, repository context, and team policy Do: identify the highest-impact defect Return: one concise review comment with a reproducible explanation Grade: defect validity, priority, location, and false-positive rate

That is a trainable task. “Learn from all of my coding chats” is not.

The practical algorithm decision tree

Here is the version I wish every training product showed before asking for a credit card:

  • Changing facts → retrieval and tools. You want fresh context, not memorized stale facts.
  • Approved input-output examples → supervised fine-tuning. The desired behavior can be demonstrated directly.
  • A rejected answer and a clearly preferred answer → preference tuning such as DPO. The relative judgment is more trustworthy than either answer in isolation.
  • Deterministic tests, exact labels, or reliable graders → RL methods such as GRPO or RFT. The model can explore and receive a meaningful reward.
  • High-quality outputs from a stronger model → distillation, usually starting with SFT. A smaller model can imitate a capable teacher on a bounded task.
  • Tool use, state changes, and side effects → an agent environment with trajectory grading. The behavior cannot be represented by the final text alone.
  • Behavior the base model already performs reliably → a prompt, or nothing. Training would add cost and regression risk without adding capability.

This is not a leaderboard. The methods are interventions for different evidence.

Use retrieval when the answer changes

Do not fine-tune a model to remember your latest API documentation, customer records, prices, or deployment state. Even a perfect training run begins going stale immediately.

Teach the model how to find and use the information. Keep the information outside the weights.

A recurring topic is not necessarily a recurring capability. Fifty chats about Stripe may mean “we repeatedly needed current Stripe context,” not “the model should memorize Stripe.”

Use SFT when you can demonstrate the answer

Supervised fine-tuning is the boring default, which is a compliment.

If you have a stable task and a collection of inputs paired with approved outputs, start there. SFT is well suited to format, style, classification, extraction, bounded tool decisions, and domain behavior that can be shown directly.

The dangerous step is assuming that the last assistant message in every successful chat is approved truth. It may only look correct because of hidden context, a later manual fix, or a tool result that was never captured.

An SFT example should survive outside its original transcript:

{ "input": "The observable task and required context", "output": "The outcome a reviewer explicitly accepts", "source": "The conversation and transformation that produced it" }

If you cannot explain why the output is correct, it is not a demonstration. It is a candidate.

Use preference tuning when the correction is the signal

Sometimes users cannot write the perfect answer from scratch, but they can recognize that one answer is better than another.

That creates the basic shape used by preference methods such as Direct Preference Optimization: a prompt, a chosen response, and a rejected response.

Chat logs contain these pairs naturally:

model attempt -> user says what is wrong -> revised attempt -> user accepts it

But not every revision is a preference pair. The user may have introduced a new fact, changed the task, or abandoned one valid direction for another. Before turning the exchange into training data, reconstruct what information was available to both answers.

Preference tuning is useful when the distinction is genuinely about judgment: clearer, safer, more relevant, better scoped, or more aligned with an expert's taste.

Use RL when you have a grader, not just enthusiasm

Methods such as GRPO become attractive when the model can attempt a task multiple times and receive a trustworthy score. DeepSeekMath is the canonical example: mathematical answers provide unusually clean reward signals.

Your workflow may have equally useful verifiers:

  • a unit test passes;
  • generated SQL returns the expected rows;
  • a patch fixes the bug without breaking a frozen test suite;
  • a classifier matches an expert label;
  • structured output validates against a schema; or
  • an agent reaches a known final state without violating policy.

RL is much less compelling when “reward” means asking another model whether it liked the answer. Model graders can be useful, but first prove that the grader agrees with experts, catches known failures, and does not reward superficial shortcuts.

SFT is the default baseline. RL is what you earn after you have a grader.

You also need evidence that the base model can occasionally reach a rewarding state. If every rollout receives zero, the problem may be the model, environment, prompt, or reward—not the policy optimizer.

Use distillation when a stronger model can teach the bounded task

Distillation is a natural fit for personal and organizational workflows. A frontier model may already perform a narrow job well, but it may be too expensive or slow to run thousands of times.

Use the stronger model to produce or improve demonstrations, keep the provenance, review a representative sample, and train a smaller model on the bounded behavior. The original knowledge-distillation framing is old, but the product opportunity is newly practical: people now generate teacher traces during ordinary work.

The important phrase is “bounded behavior.” Distilling your entire chat history into a small model is not a plan. Distilling how your team triages support tickets might be.

How to turn chat logs into a real experiment

The smallest useful training loop is not “export, train, vibe-check.”

1. Name one repeated job

Write the task in terms of observable input and expected output. Separate stable judgment from changing knowledge.

Bad:

Be more like our best engineer.

Better:

Given a failed CI run and the changed files, identify the first actionable root cause and propose the smallest fix.

2. Select evidence, not history

Choose conversations that actually exercise the job. Preserve user corrections, tool results, tests, and the final artifact. Exclude private material you do not have permission to train on.

Label every example by origin:

  • Extracted: directly supported by the conversation.
  • Corrected: repaired or completed, with the transformation visible.
  • Synthetic: created to cover a missing case, clearly marked and reviewed.

3. Build the evaluation set first

Hold out independent cases before training. Do not split neighboring turns from the same conversation across train and evaluation; that measures leakage, not generalization.

Match the grader to the task. Use exact match only when exact text is truly canonical. Prefer tests for code, schema checks for structured output, classification metrics for labels, and calibrated rubrics for open-ended judgment.

If you cannot evaluate the behavior before training, you will not know whether training improved it.

4. Run the cheapest baseline

Try the current model with a good prompt and the correct context. Record quality, latency, and cost.

If the baseline already works, stop. If it fails because context is missing, fix retrieval. If it fails on a stable behavior despite good context, training becomes a reasonable next step.

5. Choose the intervention from the signal

Start with the simplest method compatible with the evidence. Compare the trained model against the frozen baseline on the same held-out tasks.

Report two different outcomes:

  • Pipeline verified: the data loaded, training ran, and the artifact served.
  • Quality improved: the trained model beat the baseline on independent work.

A two-step LoRA smoke test may prove the first. It does not prove the second.

Why this makes training accessible

Training infrastructure is becoming easier to rent. Open models, hosted APIs, LoRA, and managed training services have lowered the compute barrier.

The remaining scarce resource is not raw text. It is trustworthy judgment attached to repeated work.

That judgment already appears in ordinary AI use:

  • “No, that is the wrong abstraction.”
  • “This test proves the fix.”
  • “Use this answer, not the first one.”
  • “This document is relevant; that one is boilerplate.”
  • “The result is correct, but the process violated policy.”

A recent Thinking Machines and Bridgewater AIA Labs study makes the opportunity concrete. Their useful target was not generic “finance chat.” It was a set of repeated investor judgments with expert labels and task-specific metrics. The training recipe mattered, but only after the team had defined measurable work and cleaned unreliable labels.

That is the accessible future of model training: not everyone becoming an ML researcher, but more people being able to turn expertise they already express into reviewable tasks, evaluations, and portable training inputs.

Where OpenPond fits

OpenPond is open source because the layer between your conversations and model weights should be inspectable.

The current training workflow starts with explicit chat selection rather than automatic history collection. It turns selected evidence into source-backed Tasksets with task definitions, provenance, validation and frozen-evaluation splits, graders, baselines, and portable training bundles.

real conversations -> selected evidence -> reviewable Taskset and grader -> frozen baseline -> approved training destination -> evaluated model artifact

The goal is not to hide SFT, DPO, or GRPO behind one magical button. It is to make the decision legible: what should be learned, what should remain retrieval or tools, what evidence supports the choice, and what result would prove improvement.

The code is at github.com/openpond/openpond.

Your chat history may contain a valuable model. The hard part is not pressing Train.

It is deciding which part of your work deserves to become a weight.