Full Stack → Tested → Handed Off. Production-grade software in weeks, not quarters.
ENGINEERING
Full-Stack SaaS Development
Python/FastAPI backend, Next.js/TypeScript frontend, PostgreSQL with Alembic migrations. We build the entire stack — auth, storage, API, and dashboard — with 80%+ test coverage and documentation your team can maintain.
For PropTech, LegalTech, and FinTech products where audit trails, role-gated actions, PDF certificate generation, and reversible workflows are not optional. We design the compliance layer from day one.
Stripe checkout sessions, idempotent webhook processing, credit ledgers, organization wallets, and promo codes — wired correctly so edge cases do not become billing incidents at 2am.
Async AI generation pipelines built on domain events, not inline API calls. Content orchestration services, versioned prompt registries, and feature flags for safe rollouts. AI failures never break your core product.
Database schema, service boundaries, API contracts, feature flags, and a written SSOT document — all designed before line one of code. Clients who engage us for architecture avoid the refactors that cost 3x later.
What We Build → Full Stack → Handed Off. Production-grade software in weeks, not quarters.
ENGINEERING
Full-Stack SaaS Development
Python/FastAPI backend, Next.js/TypeScript frontend, PostgreSQL with Alembic migrations. We build the entire stack — auth, storage, API, and dashboard — with 80%+ test coverage and documentation your team can maintain.
For PropTech, LegalTech, and FinTech products where audit trails, role-gated actions, PDF certificate generation, and reversible workflows are not optional. We design the compliance layer from day one.
Stripe checkout sessions, idempotent webhook processing, credit ledgers, organization wallets, and promo codes — wired correctly so edge cases do not become billing incidents at 2am.
Async AI generation pipelines built on domain events, not inline API calls. Content orchestration services, versioned prompt registries, and feature flags for safe rollouts. AI failures never break your core product.
From database schema to payment integration to AI pipeline — SeaTechOne ships production-grade software for founders and operators who need a technical partner, not another consultant.
Multi-tenant SaaS for real estate agents. Stripe billing, AI staging pipeline, MLS compliance certificate generation, and role-gated publication workflows — built from scratch.
Organizations, members, and role-gated actions. Stripe checkout sessions, credit ledgers, and idempotent webhook processing. Async AI staging pipeline that never blocks a request handler.
Full audit trail on every staging job. PDF compliance certificates generated on approval. Reversible publication workflow with role-gated sign-off — designed for MLS submission requirements.
Short, clear write-ups from real projects — what worked, what didn't, and why.
ArchitectureSaaSAug 2025 · 6 min
How We Architected SEAREI: Multi-Tenant SaaS From Zero
Schema design, multi-tenant org model, Stripe integration, async AI pipeline, and MLS compliance layer — how we built SEAREI from zero to production.
BackendAI PipelineAug 2025 · 7 min
Why AI Generation Should Never Run in a Request Handler
Async AI jobs inside a synchronous request cycle — how we structured staging generation so it never blocks the user or the server.
DatabaseComplianceJul 2025 · 8 min
Compliance-First Database Design: What PropTech Taught Us
Audit trails, reversible migrations, role-gated publication, and MLS certificate generation — the database decisions that make compliance products maintainable, not nightmares.
Insight
How We Architected SEAREI: Multi-Tenant SaaS From Zero
When we started building SEAREI, the first decision was scope: build a demo or build a product. We built a product.
That meant multi-tenancy from schema design, not bolted on later. Every table carries an org_id foreign key. Row-level queries are scoped at the repository layer — no controller can accidentally leak cross-tenant data. This isn't a policy; it's enforced structurally.
The stack
FastAPI on the backend, Next.js 14 on the front, PostgreSQL with Alembic migrations, Redis for job queues, and Stripe for billing. The AI pipeline runs as a background worker — separate process, separate failure domain.
Architecture before code
We wrote the architecture document before a single line of application code. Service boundaries, API contracts, data model, feature flags, environment config — all documented in a living SSOT. Every engineer on the project reads it first.
What multi-tenancy actually required
Org model: users belong to orgs; orgs own all data. Invitations, roles, and seat limits live at the org layer.
Stripe per org: each org has its own Stripe customer and subscription. Billing events map cleanly to org records.
Row-level scoping: every repository method accepts an org_id; no raw queries bypass the scope check.
Async AI pipeline: staging generation runs as a background job — never in the request path. Details in the next article.
Compliance layer
MLS compliance certificates are generated from the audit log, not from live state. That means the certificate reflects exactly what existed at the time of the transaction — immutable, exportable, signed.
Result: a codebase where you can add a new tenant tier, a new compliance rule, or a new AI provider without touching the core request path.
Why AI Generation Should Never Run in a Request Handler
AI image generation is slow. A virtual staging render can take 8–25 seconds. That's an eternity inside a synchronous HTTP request.
The naive solution is to just await the AI call. It works in demos. In production, it ties up a worker process, kills your p95 latency, and falls apart under any real load.
How we structured it instead
User submits a staging request. The API handler validates input, writes a job record to the database, and enqueues a task to Redis — then returns immediately with a job ID and a 202 Accepted.
Worker picks up the job. Separate process, separate failure domain. It calls the AI provider, writes the result to object storage, and updates the job record to complete.
Browser polls a status endpoint. Lightweight, cheap, no long-lived connections. When the job flips to complete, the UI fetches the finished image.
Why this pattern matters
User-facing latency is decoupled from AI processing time. The 202 returns in under 100ms regardless of how long the render takes.
Failures are visible and retryable. A failed job sits in the queue with an error state. No silent timeouts, no lost requests.
Capacity is tunable. Add workers for AI jobs without scaling the API tier. Rate-limit by org without touching request handlers.
The same pattern handles PDF generation
Compliance certificate generation is a different kind of slow — it walks the audit log, assembles records, renders a signed PDF. Same pattern: enqueue, worker processes, status poll, download link. No request handler waits.
Rule: if it takes more than 300ms, it belongs in a worker.
Compliance-First Database Design: What PropTech Taught Us
Most products add compliance features after a customer asks for them. By then, the database isn't ready and you're retrofitting audit trails onto a schema that was never designed to support them.
We designed SEAREI's data model around compliance from the start — not because we had auditors breathing down our necks, but because we knew the product would eventually need to prove what happened, when, and to what data.
The four columns every table carries
created_at — immutable timestamp, set on insert, never updated
updated_at — auto-updated on every write
created_by — user ID of the actor who created the record
updated_by — user ID of the last actor to modify it
Soft deletes and audit log
Compliance-relevant records are never hard-deleted. A deleted_at timestamp flags them as inactive; the data stays in the table. A separate audit_log records every state transition with a before/after JSON diff, timestamp, and actor ID.
Certificate generation builds on this
When a user requests a compliance certificate, the system walks the audit trail for a given property or transaction, assembles the relevant records, and renders a signed PDF. No manual data collection. No screenshots. No spreadsheet exports. The certificate reflects exactly what the audit log shows — immutable and exportable.
Role-gated publication
Not every user can publish a compliance record. Role checks live at the repository layer, not the controller. A user without the compliance:publish permission gets a 403 before any data is touched.
Takeaway: designing for audit upfront is cheaper than retrofitting it. It also changes how you think about deletes, updates, and state — and those decisions compound across the whole architecture.
Frequently Asked Questions
Ten clear answers. Tap to expand.
10
10 shown
What does a typical engagement look like?
We work in fixed-scope phases. Each phase has a written spec, defined deliverables, and a clear budget before we write a line of code. No open-ended retainers with unclear output.
Phase 1 — Architecture: data model, service boundaries, API contracts, feature flags, written SSOT doc.
A shippable v1 with auth, core workflow, and payments typically takes 8 to 12 weeks. Compliance layers, multi-tenant orgs, or AI pipelines add 4 to 8 weeks. We scope this in writing before we start — no surprises mid-build.
Do you build the entire product or just features?
Both. We prefer greenfield products where we design the architecture from scratch — schema, service boundaries, API contracts, the full stack. We also take on brownfield work when the existing codebase is well-structured. We will tell you honestly if it is not.
What stack do you use?
Python + FastAPI + SQLAlchemy + Alembic on the backend. Next.js 15 + React + TypeScript on the frontend. PostgreSQL in production, Stripe for payments, S3-compatible storage. Redis for async job queues. Tools your team can maintain and extend after handoff.
Can you build compliance and regulated-industry products?
Yes. SEAREI — our own product — generates MLS compliance certificates, maintains full audit trails, and uses role-gated publication workflows. PropTech, LegalTech, FinTech, and HealthTech are where we do our best work. Compliance is designed in from day one, not bolted on later.
How do you integrate AI into a product?
Via async job queues, not inline API calls. The request handler validates input and enqueues a job — then returns immediately. A background worker calls the AI provider, writes the result, and updates job state. The UI polls a lightweight status endpoint.
This means AI generation failures never block your users, never tie up server workers, and are always retryable. The same pattern handles any slow, compute-heavy task — PDF generation, batch processing, report rendering.
What does handoff look like?
All source code in a private repo you own. Written architecture documentation covering schema, service boundaries, API contracts, and feature flags. Test suite with 80%+ coverage. Reversible Alembic migrations. Deployment runbook. Incident runbook. 30-day support window after launch.
You should be able to hire any competent engineer and have them productive in the codebase within a day. That is our standard.
Who owns the IP?
You do. Everything we build for your engagement — code, architecture docs, design assets — transfers to you on final payment. We retain no license to your product or its codebase.
How is pricing structured?
Fixed-scope phases with a written spec and clear deliverables for each. No hourly billing. You know exactly what you are getting and what it costs before we start. Phase budgets typically range from $15,000 to $45,000 depending on scope and complexity.
Do you offer ongoing maintenance after launch?
Yes. Monthly retainer engagements are available after the build. Retainers cover new feature phases, dependency upgrades, incident response, and architecture reviews. Most clients stay on retainer after launch.
Start a Project
Let's build your product.
Tell us what you're building, where you are in the process, and what's blocking you. We respond within one business day with a clear next step — usually a 45-minute architecture conversation.