Long-Form Text
Misata generates realistic multi-sentence text for content that needs to feel human — product reviews, support tickets, email bodies, social captions, and bios. None of it is Lorem Ipsum.
Supported text types
text_type |
Format | Use case |
|---|---|---|
review |
1–2 sentences, sentiment-weighted | Product/service review columns |
support_ticket |
Issue description + context | Helpdesk, CRM, support systems |
email_body |
Greeting + body + closing | Email datasets, inbox simulations |
caption |
Emoji + hashtag style | Social media posts |
bio |
Role | vibe | optional emoji | Social media user profiles |
comment_body |
Short reaction | Social comments, forum replies |
description |
Product feature sentence | E-commerce, catalog data |
Reviews
Reviews are sentiment-weighted: 65% positive, 22% neutral, 13% negative — matching real platform distributions.
Sample output:
Great experience overall. Instructions could be clearer. Highly recommend.
Disappointing. Had a minor issue at first but it resolved quickly. Expected much better.
Absolutely loved it! The build quality feels premium. Will definitely come back.
Reviews are automatically detected for columns named review, review_text, or review_body.
Support tickets
Sample output:
I'm unable to log into my account after the recent update. I've tried clearing cache and it didn't help.
The payment keeps failing at checkout — tried three different cards. This is blocking my team from completing their work.
My order shows as delivered but I haven't received anything. Please escalate — this is urgent.
Auto-detected for columns named ticket_body, issue_body, or description in tables named tickets, issues, or support_*.
Email bodies
Sample output:
Hi,
I wanted to follow up on our conversation from last week. Could you share an update?
Best regards,
Auto-detected for columns named email_body, message_body, or body in tables named emails, messages, or inbox.
Social captions
Sample output:
loving every moment of this golden journey ✨ #instagood #travel #lifestyle #authentic
no filter needed when the hustle is this good 🌿 #daily #instagood #love
Bios
Sample output:
Full example: review dataset
from misata.schema import SchemaConfig, Table, Column, Relationship
schema = SchemaConfig(
name="Product Reviews",
tables=[
Table(name="products", row_count=100),
Table(name="reviews", row_count=2000),
],
columns={
"products": [
Column(name="product_id", type="int", unique=True, distribution_params={"min": 1, "max": 101}),
Column(name="name", type="text", distribution_params={"text_type": "product_name"}),
Column(name="category", type="categorical", distribution_params={
"choices": ["electronics", "clothing", "home", "sports"],
"probabilities": [0.35, 0.30, 0.20, 0.15],
}),
],
"reviews": [
Column(name="review_id", type="int", unique=True, distribution_params={"min": 1, "max": 2001}),
Column(name="product_id", type="foreign_key"),
Column(name="rating", type="float", distribution_params={
"distribution": "beta", "a": 4.0, "b": 1.5, "min": 1.0, "max": 5.0, "decimals": 1,
}),
Column(name="review_text", type="text", distribution_params={"text_type": "review"}),
Column(name="verified", type="boolean", distribution_params={"probability": 0.78}),
Column(name="created_at", type="date", distribution_params={"start": "2022-01-01", "end": "2024-12-31"}),
],
},
relationships=[
Relationship(parent_table="products", child_table="reviews",
parent_key="product_id", child_key="product_id"),
],
)
import misata
tables = misata.generate_from_schema(schema)
print(tables["reviews"][["rating", "review_text"]].head(5).to_string())