.# Shinhan AI Suite — Devpost Submission
Project Name
Shinhan AI Suite — One AI Platform for Four Entities
Tagline (120 chars)
One AI platform. Ten workflows. Four entities. Zero hallucinations. Built on Qwen for Shinhan Group Vietnam.
Inspiration
At Shinhan Group Vietnam, four subsidiaries — Bank, Finance, Securities, and Life — each operate with siloed tools and manual processes. 72% of reporting requests are still handled manually by ICT. A branch manager waiting for "deposits by branch last quarter" submits a ticket and waits days. A marketing officer rebuilds personalized campaign messages from scratch every time. A loan officer at Shinhan Finance rejects small merchants because they lack audited financials — even when six months of Shopee revenue tells a clear collateral story.
Meanwhile, two investors reading the same NHNN interest rate headline on CafeF receive the same generic analysis — even though one is a retiree protecting capital and the other is a 24-year-old momentum trader.
We asked: what if one AI platform could serve all four entities? Not four separate tools. Not four separate AI budgets. One backbone — Qwen — powering credit scoring, customer engagement, BI reporting, loyalty offers, branch optimization, micro-lending, and personalized investment content. All from a single catalogue.
What it does
Shinhan AI Suite is an internal AI workflow platform covering 10 production workflows across all four Shinhan entities:
Shinhan Bank (6 workflows)
- SB1 · AI Financial Coach — Customer-facing chatbot in the SOL app. Reads real customer profiles (income, balance, spending, risk). Every answer grounded in actual Shinhan product docs via RAG. Extracts financial goals, renders compare cards, enforces risk-profile compliance.
- SB2 · Customer Engagement Automation — Detects behavior triggers (dormancy, churn risk, birthday, salary) from CSV data. Generates personalized push/SMS/email for each customer. Batch processing 10 customers in parallel. Compliance review against NHNN + Shinhan policy. Auto-generates launch plan.
- SB3 · Loyalty & Personalized Offers — Analyzes 90 days of transaction history. Picks 7 tier-appropriate offers from 1,281 merchants. Generates fraud-safe dynamic QR codes. Chat grounded only in offers just generated — no hallucinated promotions.
- SB5 · IntelliReport (Operational BI) — Conversational BI for bank analysts. Ask in Vietnamese, AI writes SQL, classifies sensitivity (L1/L2/L3), executes against 350K+ rows across 5 PostgreSQL schemas. HTML dashboard artifacts.
- SB9 · SME Credit Scoring — Alternative credit scoring via POS data. 12-month revenue analysis, 5-factor model, animated credit decision card (score gauge, grade, approved amount). Full credit memo with risk factors.
- SB10 · Branch Traffic Prediction — Forecasts foot traffic by hour per branch. Recommends staffing levels and queue optimization.
Shinhan Finance (2 workflows)
- SF9 · IntelliReport (Executive MIS) — Management dashboards. P&L, OKRs, market share vs VCB/TCB/MBB. Same platform as SB5, different agent + data.
- SF12 · MicroBiz Loan — AI micro-lending for digital sellers (Shopee, Grab, TikTok Shop). No balance sheet needed. 6 months of platform data = collateral. Score 826/850, Grade A+, approved in 30 seconds.
Shinhan Securities (1 workflow)
- SS3 · FinVest AI — Personalized investment content. 4-question onboarding classifies investors into 5 archetypes. Signature Compare feature: same news article → 2 completely different AI-generated headlines and investment ideas (Conservative vs Aggressive), side by side, parallel Qwen calls.
Shinhan Life (1 workflow)
- SL1 · IntelliReport (Life Analytics) — Insurance-specific BI. Customer segmentation, churn prediction, persistency scoring, agency performance. PII masking enforced.
How we built it
Architecture — 3 apps, 1 VPS, 0 duplicated AI logic
┌─────────────────────────────────────────────────────────┐
│ VPS (76.13.183.138) │
│ Caddy reverse proxy + auto-TLS │
├──────────────────┬──────────────────┬───────────────────┤
│ ai-hub │ bi │ fin │
│ .nullshift.sh │ .nullshift.sh │ .nullshift.sh │
│ │ │ │
│ React + FastAPI │ LibreChat + │ React + FastAPI │
│ 6 local wkflws │ MCP PostgreSQL │ + SQLite │
│ + 4 cross-links │ 3 BI agents │ 5 investor types │
│ RAG + SSE │ L1/L2/L3 gov. │ Compare WOW │
│ PDF/Excel export│ 350K+ rows │ Chart.js │
│ Port 3000/8000 │ Port 4002/3080 │ Port 8080/8200 │
└──────────────────┴──────────────────┴───────────────────┘
AI Engine — 100% Qwen
All AI inference runs through Qwen Plus (default) and Qwen Max (credit scoring) via Alibaba Cloud Model Studio's Singapore endpoint (dashscope-intl.aliyuncs.com). Zero OpenAI/Anthropic dependency.
- Streaming: SSE token-by-token via
POST /api/pipeline/run/stream - RAG: BM25 + hybrid embedding search over 35 HTML pages + 4 PDF tariff docs scraped from shinhan.com.vn. Diacritic-insensitive Vietnamese tokenizer.
- Batch: Parallel Qwen calls with
asyncio.gather(SB2 batch messaging, SS3 Compare) - Structured output: JSON code blocks parsed by frontend for widget rendering (goal cards, compare cards, credit decision cards, QR payloads)
Data — Real Shinhan-scale mock data
| Dataset | Records | Used by |
|---|---|---|
| Customers | 1,000 | SB1, SB2, SB3 |
| Transactions | 19,894 | SB1, SB3 |
| Merchants | 1,281 | SB3 |
| POS profiles | 150 | SB9 |
| Digital sellers | 50 | SF12 |
| Branch traffic | 200 | SB10 |
| BI database | 350K+ (22 tables, 5 schemas) | SB5, SF9, SL1 |
| Financial articles | 50+ (crawled from CafeF) | SS3 |
Frontend — Custom banking aesthetic
React + Vite SPA with custom CSS (no Tailwind in the hub). Plus Jakarta Sans typography. Shinhan Blue #0046FF + Gold #C5963A brand palette. Components: streaming chat, batch progress panel, credit decision card with animated score gauge, dynamic QR renderer, merchant map, seller benchmark bars, compare split-screen.
Deploy — Push to main = deploy
GitHub Actions CI/CD: push to main → rsync to VPS → docker compose up -d --build --force-recreate. Health check via curl. Three separate docker-compose.yml files (one per app), shared Caddy config.
Qwen / Alibaba Cloud technologies used
| Technology | Usage | Workflows |
|---|---|---|
Qwen Plus (qwen-plus-latest) |
Default LLM for all workflows — chat, engagement, loyalty, BI SQL, content gen, branch prediction | All 10 |
Qwen Max (qwen-max) |
High-stakes credit scoring requiring stronger reasoning | SB9, SF12 |
| Dashscope International (Singapore) | API endpoint for all inference — low latency from Vietnam | All 10 |
| Alibaba Cloud Model Studio | Infrastructure backbone — API keys, rate limiting, usage tracking | All 10 |
| Qwen Vietnamese capability | Vietnamese RAG, Vietnamese prompts, Vietnamese BI queries, Vietnamese content generation | SB1-SB10, SS3 |
Total Qwen dependency: 100%. Every AI-generated output in the platform — from a credit memo to a daily digest to a SQL query — is produced by Qwen. No fallback to other providers.
Challenges we ran into
1. RAG accuracy for Vietnamese banking products Shinhan's product pages use heavy marketing language with inconsistent terminology. We scraped 35 HTML pages + extracted 4 PDF tariff tables, then built a custom Vietnamese tokenizer that strips diacritics before BM25 indexing. Result: AI cites actual interest rates and product conditions instead of hallucinating.
2. SSE streaming with structured output
Qwen streams tokens one by one, but our UI needs to parse JSON blocks mid-stream to render widgets (goal cards, compare cards, credit scores). We built a streaming parser that detects ::goal::, ::compare::, and `json markers in the token stream and triggers UI renders before the full response completes.
3. Cross-entity "One Shinhan" BI
IntelliReport needs to JOIN across bank.customers, finance.customers, securities.accounts, and life.policies in a single query. We designed 5 PostgreSQL schemas with shared foreign keys and trained the Qwen agent (via system prompt) to understand the schema relationships. Result: "How many customers use multiple Shinhan services?" → correct cross-schema JOIN in one shot.
4. Sensitivity gating without human-in-the-loop latency L1/L2/L3 classification happens inside the Qwen prompt itself — the model self-classifies each query's sensitivity before executing. L1 (aggregated data) auto-executes. L2 (PII) requires reviewer approval. L3 (write operations) is blocked outright. Zero additional API calls for classification.
5. Parallel Qwen calls for Compare feature
FinVest AI's Compare view calls Qwen twice in parallel (asyncio.gather) with the same article but different investor personas. Early attempts had inconsistent response times causing UI flicker. Solved with safe_qwen_call wrapper + pre-cached fallbacks.
Accomplishments that we're proud of
- 10 production workflows running live on 3 deployed apps — not mockups, not slides, real AI responses from real data
- Zero hallucination architecture — every product recommendation cites a RAG source URL; every BI number comes from a real SQL query against real data
- Feed Compare (SS3) — the "WOW moment" where judges see the same headline produce 2 radically different investment analyses based on investor persona
- MicroBizDecisionCard (SF12) — animated credit score gauge (0→826), grade chip, approved amount, all rendered from a single Qwen JSON output
- Batch progress panel (SB2) — real-time progress bar showing 10/10 customers being processed in parallel, each with their trigger type and token count
- Cross-entity BI — 53.5% of customers use multiple Shinhan services; 95 "Super Users" use all 4 entities. One query, one platform, impossible with siloed Power BI.
- Solo builder, 1-week sprint — architecture, data generation, 10 workflows, 3 deploys, CI/CD, demo video — all built by one person in 7 days
What we learned
- Qwen Plus is production-ready for Vietnamese finance — better than expected for domain-specific Vietnamese content (banking products, credit analysis, investment commentary)
- RAG > fine-tuning for hackathons — scraping real product docs and injecting them at inference time is faster and more accurate than attempting to fine-tune
- "One platform" is a force multiplier — shared RAG service, shared SSE streaming, shared export pipeline. Adding workflow #10 took 2 hours, not 2 days
- Demo-first architecture pays off —
safe_qwen_call+ in-memory LRU cache + pre-warmed RAG indexes = the live demo never freezes, even on slow API days - Sensitivity classification can live inside the prompt — no need for a separate classifier model; Qwen self-gates with >95% accuracy when given clear L1/L2/L3 definitions
What's next for Shinhan AI Suite
Short-term (Q2 2026)
- Voice AI integration — Qwen3-ASR + Gemini TTS for voice-based customer interactions (SB4 voice call bot, already prototyped)
- Qwen Web Search — live market data for FinVest AI without manual crawling
- PDF report export with charts — ReportLab + matplotlib for branded Shinhan PDF exports (already working for SB9 credit memos)
Medium-term (Q3-Q4 2026)
- SOL app embedding — SB1 Financial Coach as a WebView widget inside Shinhan's production SOL mobile app
- Multi-language support — Qwen MT for Korean expat customers (bilingual content)
- Behavioral re-classification — track reading/interaction patterns, auto-update investor type and engagement triggers over time
- L2 approval workflow — full human-in-the-loop with Slack/Teams notification for PII query approval
Long-term (2027+)
- White-label platform — Shinhan AI Suite as a deployable product for other Shinhan Group entities in Korea, Japan, Myanmar
- On-premise deployment — Qwen self-hosted for banks requiring data sovereignty
- Real CIC integration — combine alternative scoring (SF12) with actual credit bureau data for hybrid underwriting
Built With
qwen alibaba-cloud dashscope fastapi react vite python javascript postgresql librechat mcp docker caddy github-actions pillow reportlab matplotlib bm25 sse websocket
Try it live
| App | URL |
|---|---|
| AI Workflow Hub | ai-hub.nullshift.sh |
| IntelliReport | bi.nullshift.sh |
| FinVest AI | fin.nullshift.sh |
Built With
- ai
- alibaba-dashscope
- banking
- beautiful-soup
- chatbot
- docker
- fastapi
- fintech
- httpx
- javascript
- llm
- machine-learning
- openpyxl
- pdfplumber
- pydantic
- python
- qwen
- rag
- rank-bm25
- react
- react-markdown
- reportlab
- server-sent-events
- svg
- tailwindcss
- uvicorn
- vite
- voice-ai
- websocket

Log in or sign up for Devpost to join the conversation.