diff --git a/.playwright-mcp/element-2026-02-26T23-41-11-112Z.png b/.playwright-mcp/element-2026-02-26T23-41-11-112Z.png
new file mode 100644
index 0000000..d8e521a
Binary files /dev/null and b/.playwright-mcp/element-2026-02-26T23-41-11-112Z.png differ
diff --git a/MoneyMap/Data/MoneyMapContext.cs b/MoneyMap.Core/Data/MoneyMapContext.cs
similarity index 99%
rename from MoneyMap/Data/MoneyMapContext.cs
rename to MoneyMap.Core/Data/MoneyMapContext.cs
index bfeb079..09a3e9c 100644
--- a/MoneyMap/Data/MoneyMapContext.cs
+++ b/MoneyMap.Core/Data/MoneyMapContext.cs
@@ -1,6 +1,5 @@
using Microsoft.EntityFrameworkCore;
using MoneyMap.Models;
-using MoneyMap.Services;
namespace MoneyMap.Data
{
diff --git a/MoneyMap/Models/Account.cs b/MoneyMap.Core/Models/Account.cs
similarity index 100%
rename from MoneyMap/Models/Account.cs
rename to MoneyMap.Core/Models/Account.cs
diff --git a/MoneyMap/Models/Api/FinancialAuditModels.cs b/MoneyMap.Core/Models/Api/FinancialAuditModels.cs
similarity index 100%
rename from MoneyMap/Models/Api/FinancialAuditModels.cs
rename to MoneyMap.Core/Models/Api/FinancialAuditModels.cs
diff --git a/MoneyMap/Models/Budget.cs b/MoneyMap.Core/Models/Budget.cs
similarity index 100%
rename from MoneyMap/Models/Budget.cs
rename to MoneyMap.Core/Models/Budget.cs
diff --git a/MoneyMap/Models/Card.cs b/MoneyMap.Core/Models/Card.cs
similarity index 100%
rename from MoneyMap/Models/Card.cs
rename to MoneyMap.Core/Models/Card.cs
diff --git a/MoneyMap/Models/CategoryMapping.cs b/MoneyMap.Core/Models/CategoryMapping.cs
similarity index 100%
rename from MoneyMap/Models/CategoryMapping.cs
rename to MoneyMap.Core/Models/CategoryMapping.cs
diff --git a/MoneyMap/Models/Dashboard/DashboardModels.cs b/MoneyMap.Core/Models/Dashboard/DashboardModels.cs
similarity index 100%
rename from MoneyMap/Models/Dashboard/DashboardModels.cs
rename to MoneyMap.Core/Models/Dashboard/DashboardModels.cs
diff --git a/MoneyMap/Models/Import/ImportContext.cs b/MoneyMap.Core/Models/Import/ImportContext.cs
similarity index 100%
rename from MoneyMap/Models/Import/ImportContext.cs
rename to MoneyMap.Core/Models/Import/ImportContext.cs
diff --git a/MoneyMap/Models/Import/ImportResults.cs b/MoneyMap.Core/Models/Import/ImportResults.cs
similarity index 100%
rename from MoneyMap/Models/Import/ImportResults.cs
rename to MoneyMap.Core/Models/Import/ImportResults.cs
diff --git a/MoneyMap/Models/Import/PaymentResolutionResult.cs b/MoneyMap.Core/Models/Import/PaymentResolutionResult.cs
similarity index 100%
rename from MoneyMap/Models/Import/PaymentResolutionResult.cs
rename to MoneyMap.Core/Models/Import/PaymentResolutionResult.cs
diff --git a/MoneyMap/Models/Import/TransactionCsvRow.cs b/MoneyMap.Core/Models/Import/TransactionCsvRow.cs
similarity index 100%
rename from MoneyMap/Models/Import/TransactionCsvRow.cs
rename to MoneyMap.Core/Models/Import/TransactionCsvRow.cs
diff --git a/MoneyMap/Models/Import/TransactionCsvRowMap.cs b/MoneyMap.Core/Models/Import/TransactionCsvRowMap.cs
similarity index 100%
rename from MoneyMap/Models/Import/TransactionCsvRowMap.cs
rename to MoneyMap.Core/Models/Import/TransactionCsvRowMap.cs
diff --git a/MoneyMap/Models/Merchant.cs b/MoneyMap.Core/Models/Merchant.cs
similarity index 94%
rename from MoneyMap/Models/Merchant.cs
rename to MoneyMap.Core/Models/Merchant.cs
index b2532f4..e93570f 100644
--- a/MoneyMap/Models/Merchant.cs
+++ b/MoneyMap.Core/Models/Merchant.cs
@@ -1,4 +1,3 @@
-using MoneyMap.Services;
using System.ComponentModel.DataAnnotations;
namespace MoneyMap.Models;
diff --git a/MoneyMap/Models/Receipt.cs b/MoneyMap.Core/Models/Receipt.cs
similarity index 100%
rename from MoneyMap/Models/Receipt.cs
rename to MoneyMap.Core/Models/Receipt.cs
diff --git a/MoneyMap/Models/ReceiptLineItem.cs b/MoneyMap.Core/Models/ReceiptLineItem.cs
similarity index 100%
rename from MoneyMap/Models/ReceiptLineItem.cs
rename to MoneyMap.Core/Models/ReceiptLineItem.cs
diff --git a/MoneyMap/Models/ReceiptParseLog.cs b/MoneyMap.Core/Models/ReceiptParseLog.cs
similarity index 100%
rename from MoneyMap/Models/ReceiptParseLog.cs
rename to MoneyMap.Core/Models/ReceiptParseLog.cs
diff --git a/MoneyMap/Models/Transaction.cs b/MoneyMap.Core/Models/Transaction.cs
similarity index 100%
rename from MoneyMap/Models/Transaction.cs
rename to MoneyMap.Core/Models/Transaction.cs
diff --git a/MoneyMap/Models/Transfer.cs b/MoneyMap.Core/Models/Transfer.cs
similarity index 100%
rename from MoneyMap/Models/Transfer.cs
rename to MoneyMap.Core/Models/Transfer.cs
diff --git a/MoneyMap.Core/MoneyMap.Core.csproj b/MoneyMap.Core/MoneyMap.Core.csproj
new file mode 100644
index 0000000..448a54a
--- /dev/null
+++ b/MoneyMap.Core/MoneyMap.Core.csproj
@@ -0,0 +1,16 @@
+
+
+ net8.0
+ enable
+ enable
+
+
+
+
+
+
+
+
+
+
+
diff --git a/MoneyMap.Tests/MoneyMap.Tests.csproj b/MoneyMap.Tests/MoneyMap.Tests.csproj
index 3b7f223..fd72023 100644
--- a/MoneyMap.Tests/MoneyMap.Tests.csproj
+++ b/MoneyMap.Tests/MoneyMap.Tests.csproj
@@ -22,6 +22,7 @@
+
diff --git a/MoneyMap.sln b/MoneyMap.sln
index a914c76..10734c0 100644
--- a/MoneyMap.sln
+++ b/MoneyMap.sln
@@ -7,20 +7,54 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoneyMap", "MoneyMap\MoneyM
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoneyMap.Tests", "MoneyMap.Tests\MoneyMap.Tests.csproj", "{4CAD4283-4E2D-B998-4839-03B72BDDBEF5}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MoneyMap.Core", "MoneyMap.Core\MoneyMap.Core.csproj", "{A927BF5C-8F88-43D0-9801-4587FEDFBAAF}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|x64.Build.0 = Debug|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Debug|x86.Build.0 = Debug|Any CPU
{B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|x64.ActiveCfg = Release|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|x64.Build.0 = Release|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|x86.ActiveCfg = Release|Any CPU
+ {B273A467-3592-4675-B1EC-C41C9CE455DB}.Release|x86.Build.0 = Release|Any CPU
{4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|x64.Build.0 = Debug|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Debug|x86.Build.0 = Debug|Any CPU
{4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
{4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|x64.ActiveCfg = Release|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|x64.Build.0 = Release|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|x86.ActiveCfg = Release|Any CPU
+ {4CAD4283-4E2D-B998-4839-03B72BDDBEF5}.Release|x86.Build.0 = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|x64.Build.0 = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Debug|x86.Build.0 = Debug|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|Any CPU.Build.0 = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|x64.ActiveCfg = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|x64.Build.0 = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|x86.ActiveCfg = Release|Any CPU
+ {A927BF5C-8F88-43D0-9801-4587FEDFBAAF}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/MoneyMap/MoneyMap.csproj b/MoneyMap/MoneyMap.csproj
index 539dd14..398c271 100644
--- a/MoneyMap/MoneyMap.csproj
+++ b/MoneyMap/MoneyMap.csproj
@@ -18,15 +18,18 @@
-
-
-
-
+
+ all
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
-
+
+
+
+