Documentation Index
Fetch the complete documentation index at: https://runcrate.ai/docs/llms.txt
Use this file to discover all available pages before exploring further.
Turn rough bullet points into polished professional emails. Control tone, adjust formality, generate in multiple languages.
Basic email generation
from runcrate import Runcrate
client = Runcrate(api_key="rc_live_YOUR_API_KEY")
response = client.models.chat_completion(
model="deepseek-ai/DeepSeek-V3",
messages=[
{"role": "system", "content": "Write professional emails from bullet points. Output only the email."},
{"role": "user", "content": "Write a formal email:\n- Thanks for Tuesday meeting\n- Interested in partnership proposal\n- Need to review pricing with finance\n- Schedule follow-up next week?\n- Recipient: Sarah Chen, VP Partnerships, Acme Corp"}
],
)
print(response.choices[0].message.content)
Tone control
from runcrate import Runcrate
client = Runcrate(api_key="rc_live_YOUR_API_KEY")
tones = {
"formal": "Formal business emails. Professional language, proper salutations.",
"friendly": "Warm, friendly emails. Conversational but professional.",
"direct": "Concise, direct emails. No filler.",
"apologetic": "Sincere apology emails. Acknowledge issue, take responsibility.",
}
response = client.models.chat_completion(
model="deepseek-ai/DeepSeek-V3",
messages=[
{"role": "system", "content": tones["direct"] + " Output only the email."},
{"role": "user", "content": "Write an email:\n- Deadline moving Friday → next Wednesday\n- Waiting on vendor API credentials\n- No impact on launch date\n- Team should continue other tasks"}
],
)
print(response.choices[0].message.content)
Multi-language
points = "- Confirming signed contract\n- Onboarding begins Monday\n- Send requirements by Friday"
for lang in ["English", "Japanese", "German", "Spanish"]:
response = client.models.chat_completion(
model="deepseek-ai/DeepSeek-V3",
messages=[
{"role": "system", "content": f"Write professional emails in {lang}. Output only the email."},
{"role": "user", "content": f"Formal email from these points:\n{points}"}
],
)
print(f"\n--- {lang} ---\n{response.choices[0].message.content}")
Next.js API route
// app/api/write-email/route.ts
import { runcrate } from '@runcrate/ai';
import { generateText } from 'ai';
const TONES: Record<string, string> = {
formal: 'Formal business emails.', friendly: 'Warm, friendly emails.', direct: 'Concise. No filler.',
};
export async function POST(req: Request) {
const { bulletPoints, tone = 'formal', language = 'English' } = await req.json();
const { text } = await generateText({
model: runcrate('deepseek-ai/DeepSeek-V3'),
messages: [
{ role: 'system', content: `${TONES[tone] || TONES.formal} Write in ${language}. Output only the email.` },
{ role: 'user', content: `Write an email:\n${bulletPoints}` },
],
});
return Response.json({ email: text });
}
Tips
- Bullet points over paragraphs. Clear bullets give better results than prose input.
- One tone per system prompt. Change the system prompt to switch tones.
- CJK languages. Consider Qwen3 models for more natural CJK output.