Module: CompletionKit::Onboarding::SampleData

Defined in:
app/services/completion_kit/onboarding/sample_data.rb

Overview

Opt-in starter data for the onboarding page: one dataset + one prompt so a brand-new install has something to poke at. Idempotent — a no-op once the workspace already has any prompt or dataset. Deliberately does NOT create a provider credential (needs a real API key) or a run (user-initiated).

Constant Summary collapse

SAMPLE_CSV =
<<~CSV.freeze
  ticket
  "My order #4827 arrived with a dented panel. I emailed photos 11 days ago and heard nothing. Today I was told the return window 'closed'. I paid $749. I want a refund or replacement, not store credit."
  "Tracking says delivered to my porch Tuesday 3:47pm. I was home all day, nothing arrived, neighbours' cameras show no van. Order #5102 — a $315 mixer, wedding gift, wedding is Saturday. Can someone look today?"
  "WELCOME20 says 'invalid' at checkout but the promo email says it's good through May 31. Same email I'm signed in with. Tried Chrome and Safari. Cart is $186 waiting on you."
CSV
SAMPLE_PROMPT =
{
  name: "Sample: Support reply",
  description: "A starter prompt — drafts a warm, professional reply to a customer support ticket. Edit it or delete it; it's just here to get you going.",
  template: "You are a senior customer-support specialist. Write a warm, professional reply to this ticket. Acknowledge the customer's situation, be specific about next steps, and don't be defensive.\n\nTicket:\n{{ticket}}",
  llm_model: "gpt-4o-mini"
}.freeze

Class Method Summary collapse

Class Method Details

.install!Object



24
25
26
27
28
29
30
31
32
33
34
# File 'app/services/completion_kit/onboarding/sample_data.rb', line 24

def install!
  return if CompletionKit::Prompt.exists? || CompletionKit::Dataset.exists?

  CompletionKit::Dataset.create!(name: "Sample: Customer tickets", csv_data: SAMPLE_CSV)
  CompletionKit::Prompt.create!(
    name: SAMPLE_PROMPT[:name],
    description: SAMPLE_PROMPT[:description],
    template: SAMPLE_PROMPT[:template],
    llm_model: SAMPLE_PROMPT[:llm_model]
  )
end