swipefund.

Information Security Policy

Karr Consultants, LLC — operator of the SwipeFund application Tustin, California, United States

Version 1.0
Effective 29 July 2026
Policy owner Brian Karr, Managing Member — security@getswipefund.com
Review cadence Every 6 months, and upon any material change to systems, vendors, or data handling
Next review due 29 January 2027

Control summary

Area Position
Bank credentials Never received, never stored. Collected by Plaid Link directly.
Passwords None exist. Authentication is Google OAuth exclusively.
Money movement Structurally impossible. We hold no Plaid product capable of it.
Plaid products held Transactions only. No Auth, Transfer, Payment Initiation, Signal, or FCRA product.
Card data (PAN/CVV/PIN) Never received. Out of PCI-DSS scope.
Data isolation Row-Level Security on every table, enforced at the database layer and verified by executable test.
Access tokens Encrypted at rest, excluded from client-readable grants, never logged, never sent to a browser.
Encryption TLS 1.2+ in transit; AES-256 at rest.
Production access One named individual, MFA required on every account.
Vulnerability management Continuous automated dependency scanning, with documented remediation service levels.
Retention and deletion Retained only while it serves the user. Deletion enforced by database cascade, not by application code.
Data sold or shared None, ever. Revenue is consumer subscription.

0. Scope and operating model

Karr Consultants, LLC is a California limited liability company with two members. SwipeFund is a product operated by the LLC; it is not a separately incorporated entity, and all obligations under this policy are obligations of Karr Consultants, LLC.

Production system access is limited to a single member, the Managing Member, who is also the sole engineer. The second member holds no credentials to any production system, database, or vendor console. This is least privilege applied at the ownership level: participation in the company does not confer access to customer data.

This policy governs every system that stores, processes, or transmits end-user data, and every vendor relationship through which such data passes. SwipeFund is pre-launch; the controls described here are in force today, and §11 states plainly which additional controls are scheduled and when.


1. Our security posture in one paragraph

We reduce what can go wrong rather than relying on detecting it afterward. The most sensitive data in this product category — bank login credentials — never enters our systems, because Plaid Link collects it directly and we receive only a token. The second most sensitive — passwords — does not exist, because we delegate authentication entirely to Google. The most damaging capability — moving a user's money — is not available to an attacker who fully compromises us, because we never purchased it. What remains is transaction history, isolated per-user at the database layer by controls that hold even if our application code is bypassed entirely. A worst-case breach of SwipeFund exposes a list of purchases. It does not expose credentials, does not enable account takeover at any financial institution, and cannot be used to move a dollar.


2. Data inventory

Class Contents Location Retention
Authentication identity Email address, Google account identifier Supabase Auth Life of account
Transaction data Amount, date, merchant, category, account name, last-four mask, institution Supabase Postgres Life of connection; deleted on disconnect
Plaid access token Opaque token authorizing read access Supabase Postgres, encrypted column Life of connection; deleted on disconnect
User-authored data Spending profile, cards owned, travel goals, points ledger Supabase Postgres Life of account

Data we do not receive

Exclusions by design, each eliminating a category of risk rather than managing it:


3. Read-only by construction

SwipeFund requests exactly one Plaid product: Transactions.

We hold no product capable of initiating a transfer, payment, or any movement of funds — not Auth, not Transfer, not Payment Initiation, not Signal. This is not a setting an attacker could flip: enabling a money-movement product requires a separate request through the Plaid dashboard subject to Plaid's own review. A total compromise of our infrastructure cannot move a user's money, because the capability does not exist in our integration.

We hold no FCRA-regulated product. We make no lending, credit, or eligibility determination about any person, and we furnish data to no one who does.


4. Identity and access management

4.1 End users

4.2 Production access

4.3 Authorization at the database layer

Authorization is enforced by the database itself, not solely by application code — so that an application-layer flaw does not become a data breach.


5. Encryption


6. Secrets management


7. Secure development

7.1 Vulnerability management

Scanning of endpoint devices is not yet in place; see §12.


8. Logging and monitoring


9. Vendors and subprocessors

Vendor Purpose Data received
Plaid Inc. Account connection, transaction data Bank credentials (directly from user, never via us); transaction data
Supabase Inc. (AWS, US) Database, authentication, server-side functions All stored user data
Vercel Inc. Application hosting Request metadata; no user data at rest
Google LLC OAuth identity provider Authentication assertion only

No vendor receives user financial data without first being recorded here. We do not sell, rent, or share user data with any third party, and we do not use it for advertising, resale, model training, or any purpose beyond delivering the product to the user whose data it is. Revenue comes from a consumer subscription — our business model does not depend on the data.


10. Data retention and deletion

10.1 Governing principle

We retain data only while it serves the user it belongs to. There is no business reason for us to hold data past that point: we do not sell it, do not use it for advertising or model training, and do not monetize it in any way that would reward accumulation. Our revenue is a consumer subscription, so retention beyond usefulness is pure liability. This policy is written to reflect that alignment rather than to work around a conflicting incentive.

10.2 Retention schedule

Data Retained while Deleted
Plaid access token The institution connection is active Immediately on disconnect, account deletion, or item revocation
Transaction records The originating connection is active Immediately on disconnect or account deletion
Connected account metadata (name, mask, institution) The connection is active Immediately on disconnect or account deletion
Spending profile, owned cards, travel goals, points ledger The account is active On account deletion
Authentication identity (email, Google account ID) The account is active On account deletion
Application and authentication logs Vendor standard retention Aged out automatically by the vendor
Database backups Vendor standard retention window Aged out automatically by the vendor

We set no retention period longer than the life of the relationship. No category of user data is archived, warehoused, or retained "for analytics" after the user's connection or account ends.

10.3 Deletion triggers

Deletion is initiated by any of the following, without requiring a support request or a written demand:

  1. User disconnects an institution. Removes the access token, the connected account records, and the transaction history originating from that institution.
  2. User deletes their account. Removes every record belonging to that user across every table.
  3. The connection is revoked upstream — by the user at their bank, or by Plaid. The item is treated as terminated and its data is removed on the same basis as a user-initiated disconnect.
  4. Statutory deletion request. Honored within the timeframe the applicable law requires; see §10.6.

10.4 Deletion is enforced by the database, not by application code

Completeness of deletion does not depend on an engineer remembering every table that needs cleaning.

Access tokens are additionally revoked with Plaid at disconnection, so the authorization is withdrawn at the source rather than merely deleted on our side.

10.5 Backups

Deletion from the live database is immediate. Copies may persist in encrypted vendor backups until those backups age out on their normal schedule, after which they are unrecoverable. We state this plainly rather than implying instantaneous erasure everywhere: backup data is encrypted at rest, is not queryable by us in the ordinary course, and is never used to repopulate deleted records.

10.6 User rights

Users may, at any time and at no cost:

Where California's CCPA/CPRA or a comparable state privacy law applies, we honor deletion and access requests within the statutory period — 45 days, extendable once where the law permits — and we do not discriminate against users who exercise these rights, which for us is trivially true, since exercising them simply ends the service.

10.7 Review

This policy is reviewed on the cadence stated at the head of this document — every six months, and upon any material change to systems, vendors, or data handling. Any change to a retention period is recorded with its date and the reason for the change.


11. Incident response

The Managing Member is the incident owner and the point of contact for any reported security issue, reachable at the address on this document.

Upon discovering or being notified of a suspected incident:

  1. Contain. Revoke the affected credential or access token and disable the affected pathway. Because our integration is read-only, no containment step requires halting money movement.
  2. Assess. Determine what data was reachable, for how long, and for how many users, using database and authentication logs.
  3. Notify. Inform Plaid's security team without undue delay where the incident involves data obtained through Plaid, consistent with our obligations under the Plaid developer agreement. Notify affected users and applicable regulators as required by California Civil Code §1798.82 and any other applicable breach notification statute.
  4. Remediate and record. Correct the root cause, add a regression test wherever the failure was one a test could have caught, and document the incident with its timeline and corrective actions.

Suspected vulnerabilities may be reported to the contact above. We will acknowledge good-faith reports and will not pursue legal action against a researcher who acts in good faith and does not access, alter, or retain other people's data.


12. Security roadmap

Controls scheduled but not yet in force, stated explicitly so that our current posture is not overstated. Each is tied to a stage rather than left open-ended.

Control Status Scheduled
Endpoint (laptop) vulnerability scanning Not in place Before public launch
Third-party penetration test Not performed Before public launch
Documented disaster recovery test Not performed Before public launch
Automated alerting and on-call rotation Not in place At meaningful user volume
Separation of duties across staff Not applicable — single operator Upon first engineering hire
SOC 2 Type II Not held Upon enterprise or partner requirement

We report these openly because a reviewer will identify them regardless, and because a policy asserting completeness it does not possess is worth less than one that states its position accurately. Every item above is tracked and revisited at each policy review.


13. Acceptance

This policy is approved and maintained by the undersigned, who is responsible for its implementation and for review on the cadence stated above.

Brian Karr Managing Member, Karr Consultants, LLC 29 July 2026