diff --git a/package.json b/package.json
index 8b4fdd17e899d571f68bbd57bc14c30dc81a4e8b..4440b79d1212cb86219befca037cafa5f933c933 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "@arise/aidc-sveltekit",
-  "version": "0.2.2",
+  "version": "0.2.3",
   "type": "module",
   "scripts": {
     "dev": "vite dev",
diff --git a/src/lib/default.ts b/src/lib/default.ts
index f5894422af1f1b07807f534e8b47dab47d3007ea..3386c2d091e265b174d94a2770238e477d7cf5fe 100644
--- a/src/lib/default.ts
+++ b/src/lib/default.ts
@@ -22,7 +22,7 @@ class DefaultLucia extends LuciaWrapper<DatabaseUser> {
     this.db.exec(`CREATE TABLE IF NOT EXISTS user (
       id TEXT NOT NULL PRIMARY KEY,
       subject TEXT NOT NULL UNIQUE,
-      claims JSON NOT NULL
+      claims TEXT NOT NULL
     )`);
 
     this.db.exec(`CREATE TABLE IF NOT EXISTS session (
@@ -34,16 +34,22 @@ class DefaultLucia extends LuciaWrapper<DatabaseUser> {
     )`);
   }
 
-  getUser(subject: string) {
-    return this.db
+  getUser(subject: string): DatabaseUser | undefined {
+    const user = this.db
       .prepare("SELECT * FROM user WHERE subject = ?")
-      .get(subject) as DatabaseUser | undefined;
+      .get(subject) as InternalUser | undefined;
+    if (!user) return undefined;
+    return {
+      id: user.id,
+      subject: user.subject,
+      claims: JSON.parse(user.claims),
+    };
   }
 
   createUser(subject: string, userId: string, claims: IdTokenClaims) {
     this.db
       .prepare("INSERT INTO user (id, subject, claims) VALUES (?, ?, ?)")
-      .run(userId, subject, claims);
+      .run(userId, subject, JSON.stringify(claims));
   }
 }
 
@@ -57,6 +63,11 @@ declare module "lucia" {
   }
 }
 
+interface InternalUser {
+  id: string;
+  subject: string;
+  claims: string;
+}
 export interface DatabaseUser {
   id: string;
   subject: string;