| App name | 잔소리가계부 (Nag Budget) |
|---|---|
| Package name | com.zucchini.gonari |
| Developer and operator | Zucchini (the "Company") |
| Data protection officer | Jiseong Hong |
| Contact | zucchini.help@gmail.com · kiniinsight@gmail.com |
This policy applies to the Nag Budget app provided by the developer Zucchini. The developer name and contact registered on Google Play are as above.
| Item | When | Where it is stored |
|---|---|---|
| Email, name, profile photo URL, unique identifier (uid) | When you sign in with Google | Firebase Authentication |
| Anonymous identifier (uid) | When you start without signing in | Firebase Authentication |
| Display name, friend code | Created on first launch; the name can be changed | Cloud Firestore |
| Expense and income entries (text, amount, category, date, time, the raw line you typed)sensitive | When you type them | Cloud Firestore |
| Nags (a line left on an entry) | When you type them | Cloud Firestore |
| Ledger name, member list, invite code, join requests | When you create or join a ledger | Cloud Firestore |
| Friend list, friend requests | When you request or accept with a friend code | Cloud Firestore |
| Push notification token | When you allow notifications | Cloud Firestore (inside that ledger document) |
| List of people you blocked | When you block someone | Cloud Firestore (an area only you can read) |
| Abuse reports (reporter, subject, reason)note | When you report | Cloud Firestore. See section 8 |
| Usage events (screen views and similar) | Automatically while you use the app | Firebase Analytics |
| Usage steps (when you first used each screen or feature, and the days you opened the app in your first 14 days) | Automatically while you use the app. Once per step, with no amounts or text | Cloud Firestore (under your account) |
| Advertising identifier | Automatically. See section 2 | Firebase Analytics, Google AdMob |
| Ad request data (advertising identifier, device and app information, approximate region inferred from IP, ad impressions and clicks) | When ads are on and an ad card appears on screen. See section 2 | Google AdMob |
| Ad privacy consent choice | Before the first ad in regions that require consent (such as the EU) | The device and Google AdMob |
| Crash reports (stack trace, device model, OS version) | When the app crashes | Firebase Crashlytics |
We do not access the camera, location, photo library or contacts, and we do not request those permissions. The app asks for internet access and notifications, the advertising ID permission (AD_ID) used by the ads SDK, and microphone and speech recognition permission, asked only when you turn on Voice input in Labs and tap the mic (6-1).
Expense and income records are financial information and more sensitive than ordinary notes.
| Where the record lives | Who can see it |
|---|---|
| Your personal ledger | You, and friends you accepted |
| A shared ledger | The approved members of that ledger |
| A pending join request | The ledger name and member count only. Entries and nags stay hidden. |
Records stored on the server can technically be opened by the operator. So we have set out when that happens and how it is logged.
When you record an expense, people in the same ledger get a notification. For that, the app sends
only what is needed to compose the notification to a server the Company operates (kiniinsight.com).
When you type one line such as "lunch gimbap 4500, taxi yesterday 12000", the app splits it into several entries and assigns categories. That processing runs on the device using rules, and no text is sent anywhere for this purpose.
If this interpretation ever moves to an external AI model, we will state here what is sent and tell you inside the app before it happens.
Exception: only for the operator (admin) accounts, a typed line is sent to an external AI model (Anthropic Claude) to test the quality of the split. No other user's text is sent.
If you turn on Voice input in Labs on your profile and tap the mic in the input field, your phone's speech recognition turns what you say into text while you speak. We do not receive or store the audio. The text only goes into the input field, and it is saved like any other entry only when you tap send.
Speech recognition is handled by your phone's speech service (usually Google on Android), and the audio may be sent to that service to do it. That processing follows that service's privacy policy. Turn Voice input off in Labs to stop using the microphone.
| Recipient | What | Why |
|---|---|---|
| Google (Firebase Authentication) | Account details, unique identifier | Sign-in |
| Google (Cloud Firestore) | All records, ledgers, friends, push tokens | Storage and sharing |
| Google (Firebase Analytics) | Usage events, advertising identifier | Usage analysis |
| Google (Firebase Crashlytics) | Crash reports | Crash tracking |
| Google (AdMob) | Ad request data, advertising identifier, consent choice | Showing and measuring ads |
| Expo (Expo Push) | Push tokens, notification text | Notification delivery |
| Vercel | The server those notification requests pass through | Server operation |
| Your phone's speech recognition service (Android: usually Google) | Audio while you speak with Voice input on | Turning speech into text. The audio never reaches us |
We do not sell personal data. The only data that goes out for ads is the AdMob row above; your entries do not. Cloud Firestore is hosted in a United States region, so records are stored outside the Republic of Korea.
The service is not directed at children under 14, and we do not knowingly collect their personal data. If we learn of such a case we delete it without delay.
For a complaint or consultation about a privacy violation in the Republic of Korea, you may contact:
When this policy changes we publish it here with an effective date. Material changes, such as new collected items or a new third party, are also announced inside the app.