NeuralVault / frontend /src /constants /fallbacks.js
Gaurav711's picture
feat: upgrade fraud detection to XGBoost & SHAP local explanations with premium dashboard
1bc283e
Raw
History Blame Contribute Delete
5.17 kB
// Fallback data for all demo tabs when Gemini API is unavailable
export const FALLBACK_NL2SQL = {
sql: `WITH sentiment_baseline AS (
-- Step 1: Calculate each customer's average sentiment score
SELECT
r.customer_id,
AVG(r.sentiment_score) AS avg_sentiment,
COUNT(*) AS total_reviews,
MIN(r.sentiment_score) AS worst_review
FROM reviews r
GROUP BY r.customer_id
HAVING AVG(r.sentiment_score) < -0.4 -- angry threshold
),
purchase_behavior AS (
-- Step 2: Get post-complaint order stats
SELECT
o.customer_id,
COUNT(*) AS orders_after_complaint,
SUM(o.amount) AS spend_after_complaint,
MAX(o.created_at) AS last_purchase
FROM orders o
JOIN sentiment_baseline sb ON sb.customer_id = o.customer_id
WHERE o.created_at > (
SELECT MIN(r.created_at) FROM reviews r
WHERE r.customer_id = o.customer_id
AND r.sentiment_score < -0.4
)
GROUP BY o.customer_id
HAVING COUNT(*) >= 1
),
ranked_loyal_complainers AS (
-- Step 3: Join and rank by lifetime value
SELECT
c.id, c.name, c.email, c.lifetime_value,
sb.avg_sentiment,
pb.orders_after_complaint,
pb.spend_after_complaint,
RANK() OVER (ORDER BY c.lifetime_value DESC) AS ltv_rank,
DENSE_RANK() OVER (ORDER BY sb.avg_sentiment ASC) AS angriest_rank,
LAG(pb.spend_after_complaint) OVER (
ORDER BY c.lifetime_value DESC
) AS prev_customer_spend,
c.segment,
c.ai_metadata->>'cohort_label' AS ai_cohort
FROM customers c
JOIN sentiment_baseline sb ON sb.customer_id = c.id
JOIN purchase_behavior pb ON pb.customer_id = c.id
)
SELECT
name, email, segment, ai_cohort,
ROUND(lifetime_value, 2) AS lifetime_value_usd,
ROUND(avg_sentiment, 3) AS avg_sentiment_score,
orders_after_complaint,
ROUND(spend_after_complaint, 2) AS spend_after_complaint_usd,
ltv_rank, angriest_rank,
last_purchase::DATE AS last_active
FROM ranked_loyal_complainers
ORDER BY ltv_rank
LIMIT 50;
-- Run EXPLAIN ANALYZE for execution plan`,
explanation: `This query identifies your highest-value customers who complained but stayed loyal — a critical retention segment. It uses three CTEs to separate concerns: sentiment aggregation, purchase behavior filtering, and final ranking. The two window functions (RANK and DENSE_RANK) provide dual-axis sorting — by lifetime value and by anger severity — letting the business prioritize outreach. The JSONB operator extracts AI-computed cohort labels stored by the trigger system, avoiding a JOIN. On the reviews table, PostgreSQL will use the HNSW-adjacent GIN index on ai_metadata for the JSONB predicate.`
};
export const FALLBACK_TRIGGER_REVIEW = {
score: -0.89,
label: "NEGATIVE",
confidence: 0.97,
key_phrases: ["battery died", "no support", "11 days"]
};
export const FALLBACK_TRIGGER_PRODUCT = {
category: "Electronics",
subcategory: "Audio > Headphones",
tags: ["wireless", "premium", "over-ear"],
quality_score: 0.88,
similar_categories: ["Bluetooth Speakers", "Earbuds"]
};
export const FALLBACK_TRIGGER_TRANSACTION = {
fraud_score: 0.91,
risk_level: "CRITICAL",
risk_factors: ["Amount 54x above customer average", "New geographic location", "High-value electronics merchant"],
recommended_action: "BLOCK",
confidence: 0.94,
inference_ms: 12.42,
model_auc: 0.9455,
model_version: "XGBoost-v1.0-IEEE-CIS",
shap_attributions: [
{ feature: "Transaction Amount", shap_value: 0.35 },
{ feature: "Customer Historic Risk", shap_value: 0.15 },
{ feature: "Merchant Profile Risk", shap_value: 0.25 },
{ feature: "IP Location Anomaly", shap_value: 0.30 },
{ feature: "Transaction Velocity", shap_value: 0.05 }
],
source: "fallback_static"
};
export const FALLBACK_SEARCH_RESULTS = [
{ name: "Sony WH-1000XM5", category: "Electronics > Headphones", price: "$349.99", vector_score: 0.96, text_score: 0.88, rrf_score: 0.94, why_matched: "Exact semantic match for noise cancelling + travel headphones", in_stock: true },
{ name: "Bose QuietComfort Ultra", category: "Electronics > Headphones", price: "$429.00", vector_score: 0.94, text_score: 0.82, rrf_score: 0.91, why_matched: "Premium noise cancelling, strong brand association with travel", in_stock: true },
{ name: "Apple AirPods Max", category: "Electronics > Headphones", price: "$549.00", vector_score: 0.89, text_score: 0.71, rrf_score: 0.84, why_matched: "High-end active noise cancellation, over-ear design", in_stock: true },
{ name: "Jabra Elite 85h", category: "Electronics > Headphones", price: "$199.99", vector_score: 0.85, text_score: 0.76, rrf_score: 0.82, why_matched: "Noise cancelling headphones with long battery life for travel", in_stock: false },
{ name: "Sennheiser Momentum 4", category: "Electronics > Headphones", price: "$299.95", vector_score: 0.82, text_score: 0.68, rrf_score: 0.78, why_matched: "Premium over-ear headphones, adaptive noise cancellation", in_stock: true },
{ name: "Anker Soundcore Space Q45", category: "Electronics > Headphones", price: "$99.99", vector_score: 0.78, text_score: 0.73, rrf_score: 0.76, why_matched: "Budget noise cancelling option, foldable travel design", in_stock: true }
];