🎓 Training — GFS Platform

Enter API_KEY

Or sign in via Cloudflare Access. Hit Set to begin.

R94.12 Refreshed surface — 8 current pillars, structured corpus entries, bulk import, in-page help guide. Old R60 tab archived →
📚 How to train this system best (open me first)
1. What makes a great entry 2. Best-practice template 3. Bulk-import format 4. Coverage targets 5. Bad entries to avoid 6. Anti-patterns 7. 📚 Cross-reference brain dumps

What makes a great training entry

  • One real case from your 15 years of GFS experience — not a synthetic example.
  • Specific entities by name: "Driscoll", "RS7245", "Echo Lake" — not "a customer" or "an item".
  • The query as a user would type it — natural language, your team's vocabulary, the way someone actually asks.
  • The answer as it SHOULD appear — citation pattern, format, what to include (price, date, source row).
  • The source evidence — which D1 table + row is canonical (e.g. pricing_master.id=1234 active 2025-2026).
  • Confidence score 0.5-1.0 — how sure are you this is correct? 0.95+ for bedrock patterns, 0.65-0.80 for likely cases.

The system learns from real signal, not generic phrasing. Each great entry compounds — R89 few-shot loop injects the top 4 most-relevant samples into every chat prompt.

Best-practice template (with example)

INTENT:           customer_price_lookup
PILLAR:           price_admin
QUERY:            What does Driscoll pay for RS7245?
ANSWER TEMPLATE:  Driscoll's active price for RS7245 is $21.00/case as of
                  2026-01-15, from pricing_master row 12834. Source: invoice
                  INV-44721 from 2026-02-03 confirms.
ENTITY EXAMPLES:  ["Driscoll", "RS7245"]
SOURCE EVIDENCE:  pricing_master.id=12834 active 2025-2026
CONFIDENCE:       0.95
RATIONALE:        Real Driscoll pricing pattern; this is how the answer should
                  always look — quote price + date + source row + invoice
                  cross-validation.

Fill the form below. Select the intent first → the form pre-fills with the matching template. Edit the slots with your real case.

Per-intent hints (R94.14 — cross-reference brain dumps)

  • customer_price_lookup — expected source_of_truth: pricing_master + invoice. If you've already done a Brain Dump for the customer, their Chatbot-Friendly Facts.common_qa probably has the canonical answer phrasing — copy that into the answer template.
  • customer_spend_lookup — link to Chatbot-Friendly Facts.last_verified as the freshness signal. If the brain dump's last_verified is > 90 days, flag in your rationale.
  • vendor_cost_lookup — expected source_of_truth: vendor_bill + purchase_order. For formula-priced vendors (Bongards), include the formula in the rationale.
  • payment_lookup, contact_lookup — Brain Dump Finance and Contacts sections are the canonical sources. Reference them directly in source_evidence: entity_notes:customer:539 (R94.14 structured).

Bulk-import format

Three accepted formats. Paste a block into "📥 Bulk Import" below, preview parsed entries, then confirm.

Option A: JSON array

[
  { "intent": "customer_price_lookup", "query_template": "...",
    "answer_template": "...", "entity_examples": ["Driscoll", "RS7245"],
    "source_evidence": "pricing_master.id=12834 active 2025-2026",
    "confidence_score": 0.95 },
  { "intent": "vendor_cost_lookup", ... }
]

Option B: Markdown blocks (per entry)

# Entry
- intent: customer_price_lookup
- query: What does Driscoll pay for RS7245?
- answer: Driscoll's active price for RS7245 is $21.00/case as of 2026-01-15.
- entities: Driscoll, RS7245
- source: pricing_master.id=12834 active 2025-2026
- confidence: 0.95

# Entry
- intent: vendor_cost_lookup
- query: ...
- ...

Option C: Plain text (blank-line separated)

intent: customer_price_lookup
query: What does Driscoll pay for RS7245?
answer: Driscoll's active price for RS7245 is $21.00/case as of 2026-01-15.
entities: Driscoll, RS7245
source: pricing_master.id=12834 active 2025-2026
confidence: 0.95

intent: vendor_cost_lookup
query: ...

All three parsed to the same schema. Preview shows parse errors per entry before you confirm.

Coverage targets

  • 5+ entries per intent — the system has 25 intents, so you need 125+ minimum.
  • 10+ entries per pillar — 8 pillars (Price / Nutrition / Finance / Relationship / Order Mgmt / Production / Bid / All), so 80+ minimum, ideally 200+.
  • Diverse customers/items/scenarios per intent — don't put all 5 entries on Driscoll. Mix Driscoll, NYCDOE, Hempstead, NMSNC, etc.
  • Cover the long tail — intents with 0 entries today (per the sidebar) need at least 3 each to bootstrap.

The sidebar shows per-intent + per-pillar counts. Sort by lowest count and fill gaps first.

What makes a bad entry

  • Synthetic / made-up cases — the bot trains on noise and will cite fake rows.
  • Generic templates — "customer wants price" isn't specific enough. Use real customer + real item.
  • Wrong source evidence — the bot will cite the wrong place. Verify the source row exists.
  • Low confidence with no rationale — don't seed unsure cases. If <0.7, write a clear rationale.
  • Duplicates of existing entries — the endpoint dedupes by intent+rationale, but it wastes your time.
  • Stale data — last year's price for a customer that re-contracted in January is no longer canonical.

Anti-patterns (hard rules)

  • Never include PII — emails, phone numbers, SSNs. The endpoint scrubs PII patterns and will reject; human review is the safety net.
  • Never train on internal security/audit details — no_gfs_exposure rule. Skip anything about secrets, tokens, audit logs, infra.
  • Never re-seed existing entries — the system dedupes but it wastes your time + clutters the log.
  • Never seed below 0.5 confidence — endpoint clamps to 0.5-1.0; below = qualitative folklore, not training data.
  • Never use a Markdown header (#, ##) inside an entry value — confuses the markdown parser.

Standalone reference: docs/TRAINING_BEST_PRACTICES.md

📚 Cross-reference brain dumps (R94.14)

Training entries (corpus seeds) and Brain Dumps (per-entity notes in /entity-context.html) are two halves of the same teaching loop:

  • Brain Dump = structured facts about ONE entity (Driscoll, Bongards, RS7245). Lives in entity_notes.extracted_facts. Bot reads via get_entity_context tool.
  • Training entry = how the bot should ANSWER a class of question. Lives in decision_corpus. Bot reads via R89 few-shot loop.

How to use them together

  1. For a major customer/vendor/item, write a Brain Dump first using 📋 the R94.14 template. The Chatbot-Friendly Facts.common_qa section is where you've already drafted the Q+A pairs the bot needs.
  2. For each Q+A in that section, seed a training entry here. Use the entity name in entity_examples. Use the source-of-truth from the brain dump in source_evidence.
  3. Link them: in source_evidence, write entity_notes:customer:539 + pricing_master.id=12834 so the bot sees both the structured note AND the canonical D1 row.

Example chain

Brain Dump (Driscoll):
  Chatbot-Friendly Facts → Common Q&A:
    Q: Can we substitute RS7245? → NO — kosher; Mike approval.

Training entry (mirrors that Q+A):
  intent:           general_inquiry  (or product_substitution if defined)
  query_template:   Can we substitute RS7245 for Driscoll?
  answer_template:  NO. RS7245 is KOSHER SENSITIVE on Driscoll's kids program;
                    substitution requires Mike Levine approval. See
                    entity_notes.customer.539 (Driscoll) for full context.
  entity_examples:  ["Driscoll", "RS7245"]
  source_evidence:  entity_notes:customer:539 (R94.14 structured) + item_master:RS7245
  confidence_score: 0.95

Freshness check

When seeding a corpus entry that depends on a brain dump fact, check the brain dump's Chatbot-Friendly Facts.last_verified date. If > 90 days, either refresh the brain dump first OR flag it in your rationale ("brain dump last_verified 2025-08; verify before re-using").

Standalone reference: docs/BRAIN_DUMP_TEMPLATE.md

New corpus entry

Pick an intent to load a template.
0.90

0.95+ bedrock · 0.80-0.95 solid · 0.65-0.80 likely · 0.50-0.65 qualitative

📥 Bulk import

Paste a block of entries → preview → confirm

🎯 Legacy Q&A bank

R60-era 235-question training bank

The pre-R94.12 question-bank flow (with coach-the-system field) is preserved at /training-legacy.html. Use that if you need to work through the 235-question coverage script.

Open legacy training surface →