How I built an AU small business AI advisor with Gemini 2.0 Flash (and why Australian context changes everything)

발행: (2026년 6월 18일 PM 03:33 GMT+9)
8 분 소요
원문: Dev.to

출처: Dev.to

대부분의 AI 도구는 호주 소규모 사업체에 미국식 조언을 제공합니다. Xero를 사용하는 오스트레일리아 트레이더에게 QuickBooks 이야기를 할 필요가 없습니다. 3명의 캐주얼 직원들을 둔 카페 사장님은 Fair Work Act 의무를 가지고 있는데, 일반적인 “비즈니스 자동화” 도구는 이를 제시하지 않습니다.

저는 이 문제를 해결하기 위해 AppZ AU Business Advisor라는 무료 도구를 만들었습니다. Gemini 2.0 Flash를 활용해 실제 호주 비즈니스 맥락을 반영한 맞춤형 자동화 블루프린트를 생성합니다. 이번 포스트에서는 기술적 결정, 프롬프트 엔지니어링 접근 방식, 그리고 AU‑특화 스캐폴드가 모든 차이를 만드는 이유를 다룹니다.

일반 AI에게 “어떻게 내 비즈니스를 자동화하면 좋을까?”라고 물을 때, 학습 데이터는 미국에 편향되어 있습니다. QuickBooks에 대한 조언을 받게 되며, Xero가 아니라요. W‑9 양식에 대해 얘기하는 대신 BAS 신고에 초점을 맞춥니다. 401k에 대해 이야기하기보다는 슈퍼애너테이션(연금)에 관한 내용이 됩니다.

호주 개인이 $75k 연간 Turnover에 도달해 GST 등록을 고려할 때, 이는 단순히 무용한 것이 아니라 적극적으로 오해를 불러일으킵니다. 합规 의무는 다릅니다. 소프트웨어 생태계도 다릅니다. 고민(고통 포인트)도 다릅니다.

“호주 비즈니스에 말하고 있다”는 키워드를 삽입하는 대신, 저는 모델이 지식 기반으로 활용할 수 있는 구조화된 컨텍스트 블록인 “추론 스캐폴드”를 만들었습니다.

AUSTRALIAN BUSINESS CONTEXT:

  • GST: 10%, 연간 매출액 $75,000에서 의무적 등록
  • BAS: 분기(대규모 기업은 월) 기준으로 ATO에 제출
  • 슈퍼애너테이션: 고용주 기여 11.5%, 2026년 7월부터 월별 급여일에 지급
  • ATO 도구: 모든 고용주에게 STP 페이즈 2가 필수
  • 주된 회계 플랫폼: Xero, MYOB, Reckon (QuickBooks가 아님)
  • Fair Work Act: 어워드 레이트, 휴가 권리, 명세서 요구사항
  • 분야별 주요 소프트웨어: 트레이드 – ServiceM8, 호스피탈리티 – Deputy, 헬스케어 – Cliniko

이것은 키워드 목록이 아니라 추론 기반입니다. 트레이더가 “청구서 문제”라고 언급하면 모델은 Xero 연동, GST 포함 청구서, BAS 분류에 대해 추론합니다. 일반 청구서 템플릿이 아닌 것이죠.

핵심 기술적 결정은 Gemini의 구조화된 JSON 출력 모드를 사용하는 것이었습니다. “JSON 형식의 권장 사항을 요청하라”(따라야 하는 파싱 폴백이 필요한 경우) 대신 responseMimeType: “application/json”와 정의된 스키마를 사용합니다:
const result = await model.generateContent({
contents: [{ role: ‘user’, parts: [{ text: prompt }]}],
generationConfig: {
responseMimeType: ‘application/json’,
},
});
이처럼 반환되는 JSON은 스키마에 맞는 깨끗한 형태이며, 마크다운 코드 블록을 제거하거나 파싱 오류를 처리할 필요가 없습니다. React 컴포넌트가 바로 렌더링할 수 있습니다.

정의한 출력 스키마:
type AdvisorOutput = {
summary: string; // AU-specific 2~3문장
auContext: string; // 해당 사업 유형에 대한 핵심 AU 준수 노트
recommendations: Array;
implementationPlan: string; // AU 컨텍스트를 반영한 30일 단계
estimatedTimeSaved: string;
dollarsPerWeekSaved: string; // 선택적 시간당 금액 입력을 기반으로 계산
nextStep: string;
};

출력에 구체성을 더하는 추가 기능은 선택적 시간당 금액 입력입니다. 제공될 경우 모델은 “8-12시간/주”가 아닌 실제 절감된时间的 금전적 가치를 계산합니다:
dollarsPerWeekSaved: “계산: 절감된 시간 × $150/hr = $1,200~$1,800/주 회수된 용량”

이는 추상적인 시간 수치보다 사업주에게 훨씬 더 설득력 있는 것입니다.

Next.js 15 App Router (TypeScript)
Google AI SDK (@google/generative-ai)를 이용한 Gemini 호출
Vercel을 이용한 배포 (두 개의 서버리스 라우트: /api/advisor 와 /api/email-capture)
완전 무상태 — 데이터베이스 없음, 인증 없음, 데이터 보관 안 함

앱은 gemini-xprize.vercel.app에서 실시간으로 운영 중이며, 전체 소스는 GitHub에 있습니다. 이는 Gemini XPRIZE(소규모 비즈니스 서비스 카테고리) 제출작이지만, 실제 유용한 도구로 먼저 개발했습니다.

경쟁 속도 향상의 주요 단축선: 제품 추천은 실시간 API가 아닌 하드코딩 카탈로그에서 나옵니다. 프로덕션 버전에서는 Xero App Marketplace API 또는 MYOB 파트너 디렉터리를 끌어와 최신 권장 사항을 제공할 것입니다. Gemini 측은 동일하게 유지되며, AU 컨텍스트 스캐폴드가 핵심 가치입니다.

비슷한 것을 구축하고 있다면 핵심 교훈은: 도메인‑특화 추론 스캐폴드가 키워드 삽입보다 우수합니다. “당신은 호주 비즈니스에 말하고 있습니다”라고 말하는 것은 실제 운영 의미에 대한 구조화된 지식 기반을 제공하는 것보다 훨씬 약합니다.

댓글에서 프롬프트 구조나 구조화된 출력 방식에 대해 자유롭게 토론하고 싶습니다.

0 조회
Back to Blog

관련 글

더 보기 »

코드 리뷰가 잘못됐다

!Cover image for Code Review Gone Wronghttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Flavkesh.com%2F...