Synthetic Data Generation

Generate a structured support Q&A dataset from a column schema, with no code.

📝
TL;DR

Define a column schema with types, constraints, and categorical distributions, then generate a structured synthetic dataset from the Future AGI dashboard. Review the output, iterate on the schema, and run quality evals on the generated rows.

TimeDifficultyPackage
10 minBeginnerDashboard only
Prerequisites

Tutorial

Start the synthetic data wizard

  1. Go to app.futureagi.com, then Dataset, then Add Dataset
  2. Select Create Synthetic Data

You should see the Create Synthetic Data wizard open, prompting for a dataset name and description.

Add details

FieldValue
Namesupport-qa-synthetic
DescriptionCustomer support Q&A pairs for an e-commerce company covering returns, shipping, billing, and account issues
ObjectiveFine-tuning a support chatbot
PatternQuestions phrased naturally as a customer would ask. Answers professional, concise, and actionable.
Enter No. of rows20

Select knowledge base (optional): select a Knowledge Base to ground the generated rows in your own documents instead of the schema alone. Leave it empty to generate without domain grounding. Give the generated rows a skim before you rely on them; column properties aren’t hard validation on the result.

To set up a KB first, see the Knowledge Base cookbook. You can also start directly from the KB detail view: click Create Synthetic data in the action bar, and the wizard opens with your KB pre-selected.

Click Next.

You should see the wizard advance to the column configuration step.

Add column properties

Add three columns using the Add columns button.

Column 1: question

  • Column Type: Text
  • Properties: Min Length = 20, Max Length = 200

Column 2: answer

  • Column Type: Text
  • Properties: Min Length = 50, Max Length = 500

Column 3: category

  • Column Type: Text
  • Properties: set Value to Categorical with:
    • shipping: 25%
    • billing: 25%
    • returns: 25%
    • account: 25%

Note

Category percentages must sum to 100%. Use Add more properties to add constraints per column. See Limits & Data Types for supported column types and Synthetic Data for the property editor.

Click Next.

You should see the wizard advance to the column description step, with an input for each column you added.

Add descriptions

Write a description for each column. Use {{column_name}} to reference other columns: this creates dependencies so generated values are contextually related.

Column 1: question

A realistic customer support question about {{category}} issues.
Phrased as a real customer would type it in a chat widget.

Column 2: answer

A professional support response to {{question}} about {{category}}.
Directly addresses the concern with a clear next step.

Column 3: category

The support category this Q&A pair belongs to.

You should see all three description fields filled in, with the Create Dataset button now active.

Generate

Click Create Dataset. Generation runs in the background and the platform redirects you to the new dataset, which shows a Generating state until the rows land.

You should see the support-qa-synthetic dataset move from Generating to 20 rows across the question, answer, and category columns.

Review and iterate

  • Sort or filter rows to inspect quality
  • To re-generate or modify: click Configure Synthetic Data in the dataset toolbar. The Synthetic Data Details drawer opens

Warning

Regenerating wipes the dataset’s current rows and columns and rebuilds them from the config. If you want to keep the existing rows, use Edit Configuration and save instead: that’s the non-destructive path.

  • Re-Generate same Configuration: rebuild every row from the same settings (destructive)
  • Edit Configuration: modify the schema, then choose:
    • Replace the current dataset: overwrite with new rows
    • Create as new dataset: keep the original, generate a separate dataset
    • Add it to existing dataset: append new rows

You should see the dataset either regenerate in place or a new dataset appear, depending on the option you chose.

Run evals on the generated data

  1. Click Evaluate in the dataset toolbar
  2. Add Evaluations then select completeness
  3. Map keys: output to answer, input to question
  4. Click Add & Run

You should see a completeness score column appear next to the generated rows. A row like this scores low (illustrative example):

questionanswercompleteness
”My order #4471 arrived damaged, what do I do?""We’re sorry to hear that. Please reach out to our team for help.”0.3: doesn’t say how to reach the team or what happens next

The answer column description only says “Directly addresses the concern with a clear next step,” but nothing in the Pattern or description forces a concrete action (a link, a timeframe, a next step). To fix it, go back to Step 6, open Edit Configuration, and tighten the answer description to something like “State the specific next step the customer should take (e.g., the exact page to visit, or that a refund will process within N business days).” Regenerate and re-run completeness: a typical before/after on a tightened description moves scores from the 0.3-0.5 range up to 0.8+ (illustrative; your numbers will vary by run). Filter out any rows still scoring low before using the dataset for fine-tuning.

Troubleshooting

SymptomCauseFix
Next stays disabled on the column properties stepCategorical percentages for a column don’t sum to 100%Adjust each category’s percentage so the column’s values add up to 100%
Generated rows read as generic Q&A, not tied to a categoryColumn descriptions don’t reference {{category}}Use {{column_name}} in a column’s description to pull in another column’s value as context
Select knowledge base dropdown is emptyNo Knowledge Base exists in the project, or its documents are still processingCreate a KB and wait for its documents to finish processing, then reopen the wizard
Create Dataset appears to hang after you click itGeneration runs in the background; larger row counts take longerWait for the Generating state to resolve into rows. Don’t resubmit or navigate away
Re-Generate same Configuration produces near-duplicate rowsThe schema, Pattern, and column descriptions are unchanged from the original runEdit the Pattern or a column description under Edit Configuration before regenerating
Evaluate step shows no score column after Add & Runoutput or input mapped to the wrong dataset columnConfirm output maps to answer and input maps to question before running

Next

To score the generated dataset at scale from code instead of the dashboard, see Dataset SDK: Batch Evaluation.

Was this page helpful?

Questions & Discussion