ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
Finn ๐Ÿ’ฐ โ€” A Personal Finance Assistant That Lives in WhatsApp
Dev.toDev.to
Backend

WhatsApp ๊ธฐ๋ฐ˜ Zero-Friction ๊ฐ€๊ณ„๋ถ€: LLM Tool-use์™€ RLS๋ฅผ ํ†ตํ•œ ๊ธˆ์œต ๋ฐ์ดํ„ฐ ์ž๋™ํ™”

Finn ๐Ÿ’ฐ โ€” A Personal Finance Assistant That Lives in WhatsApp

Vicente Junior2026๋…„ 4์›” 25์ผ9๋ถ„intermediate

Context

์ „์šฉ ์•ฑ ์„ค์น˜ ๋ฐ ์ˆ˜๋™ ์ž…๋ ฅ์ด๋ผ๋Š” ๊ธฐ์กด ๊ฐ€๊ณ„๋ถ€ ์„œ๋น„์Šค์˜ ๋†’์€ ์‚ฌ์šฉ์ž ์ดํƒˆ๋ฅ ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์„ค๊ณ„. PDF ํŒŒ์‹ฑ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ํ…์ŠคํŠธ ๊นจ์ง ํ˜„์ƒ๊ณผ ์นด๋“œ ๊ฒฐ์ œ์ผ-์ฒญ๊ตฌ์ผ ๊ฐ„์˜ ์‹œ์ฐจ๋กœ ์ธํ•œ ๋ฐ์ดํ„ฐ ๋ˆ„๋ฝ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ.

Technical Solution

  • Whisper ๋ฐ GPT-4.1 ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ํ…์ŠคํŠธ์™€ ์Œ์„ฑ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ˜• ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํŒŒ์ดํ”„๋ผ์ธ ๊ตฌ์ถ•
  • PDF ํ…Œ์ด๋ธ” ํŒŒ์‹ฑ์˜ ๋ถˆ์•ˆ์ •์„ฑ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ง์ ‘ ๊ฐ’ ์ถ”์ถœ ๋Œ€์‹  ๋ฌธ๋งฅ ๊ธฐ๋ฐ˜์˜ Saldo-diff ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋„์ž…ํ•œ ๋ฐ์ดํ„ฐ ๋ณต์› ๋กœ์ง ์„ค๊ณ„
  • ์นด๋“œ ์ฒญ๊ตฌ ์ฃผ๊ธฐ ์ง€์—ฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์ˆœ ์บ˜๋ฆฐ๋” ๊ธฐ์ค€์ด ์•„๋‹Œ 60-day rolling window ๊ธฐ๋ฐ˜์˜ ์ฟผ๋ฆฌ ํ•„ํ„ฐ๋ง ์ ์šฉ
  • LLM์˜ Hallucination ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด tool_choice๋ฅผ ๊ฐ•์ œํ•˜์—ฌ ๋ชจ๋“  ๋‹ต๋ณ€์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์— ๊ธฐ๋ฐ˜ํ•˜๋„๋ก ์„ค๊ณ„
  • OpenClaw Gateway, Application-level Whitelist, Supabase RLS์˜ 3๋‹จ๊ณ„ ๊ณ„์ธต ๋ณด์•ˆ ๊ตฌ์กฐ๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ๊ฒฉ๋ฆฌ ๊ตฌํ˜„
  • ์Šค์บ”๋œ PDF์˜ ๊ฒฝ์šฐ GPT-4.1 Vision OCR๋กœ ์ž๋™ Fallback ํ•˜๋Š” ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ํŒŒ์‹ฑ ์ „๋žต ์ฑ„ํƒ

- PDF ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ ์ถ”์ถœ ์‹œ ๋‹จ์ˆœ ํ…์ŠคํŠธ ํŒŒ์‹ฑ๋ณด๋‹ค ์ฃผ๋ณ€ ๊ฐ’๊ณผ์˜ ์ฐจ์ด๋ฅผ ์ด์šฉํ•œ ์—ฐ์‚ฐ ๊ธฐ๋ฐ˜ ๋ณต์› ๋ฐฉ์‹ ๊ฒ€ํ†  - LLM ๊ธฐ๋ฐ˜ ์‹œ์Šคํ…œ์—์„œ ์‹ ๋ขฐ์„ฑ์ด ์ค‘์š”ํ•œ ์ˆ˜์น˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์‹œ tool_choice ๊ฐ•์ œ๋ฅผ ํ†ตํ•œ Memory-less ์ฟผ๋ฆฌ ์œ ๋„ - ์‚ฌ์šฉ์ž ํ–‰๋™ ํŒจํ„ด์„ ๋ถ„์„ํ•˜์—ฌ ๊ธฐ์กด ์Šต๊ด€(Chat UI)์— ํ†ตํ•ฉํ•˜๋Š” Zero-friction ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„ ์ ์šฉ - ๋ณด์•ˆ ์„ค๊ณ„ ์‹œ ๋‹จ์ผ ์ง€์  ์‹คํŒจ(SPOF)๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋‹ค์ธต ๋ฐฉ์–ด(Defense in Depth) ์ „๋žต ์ˆ˜๋ฆฝ

์›๋ฌธ ์ฝ๊ธฐ