feat: integrate google lead discovery

This commit is contained in:
2026-06-04 15:25:01 +02:00
parent 585c4eeb2a
commit 15d8bfeb66
10 changed files with 1696 additions and 22 deletions

View File

@@ -125,6 +125,9 @@ export default defineSchema({
region: v.optional(v.string()),
latitude: v.optional(v.number()),
longitude: v.optional(v.number()),
geocodedAt: v.optional(v.number()),
geocodingPlaceId: v.optional(v.string()),
geocodingFormattedAddress: v.optional(v.string()),
radiusKm: v.number(),
maxNewLeadsPerRun: v.number(),
maxAuditsPerRun: v.number(),
@@ -148,6 +151,7 @@ export default defineSchema({
leads: defineTable({
campaignId: v.optional(v.id("campaigns")),
discoveryRunId: v.optional(v.id("agentRuns")),
companyName: v.string(),
niche: v.optional(v.string()),
address: v.optional(v.string()),
@@ -155,6 +159,14 @@ export default defineSchema({
postalCode: v.optional(v.string()),
googlePlaceId: v.optional(v.string()),
googleMapsUrl: v.optional(v.string()),
googlePrimaryType: v.optional(v.string()),
googleTypes: v.optional(v.array(v.string())),
googleRating: v.optional(v.number()),
googleUserRatingCount: v.optional(v.number()),
googleBusinessStatus: v.optional(v.string()),
sourceProvider: v.optional(v.literal("google_places")),
sourceFetchedAt: v.optional(v.number()),
websiteUrl: v.optional(v.string()),
websiteDomain: v.optional(v.string()),
phone: v.optional(v.string()),
email: v.optional(v.string()),
@@ -169,6 +181,7 @@ export default defineSchema({
updatedAt: v.number(),
})
.index("by_campaignId", ["campaignId"])
.index("by_discoveryRunId", ["discoveryRunId"])
.index("by_contactStatus", ["contactStatus"])
.index("by_googlePlaceId", ["googlePlaceId"])
.index("by_websiteDomain", ["websiteDomain"])