hello@iamtodt.com

Sqwoma

An attribution service that follows a customer from the first touch to the sale, using data from several marketing sources.

Type

Personal project

My role

Frontend and design.

How it works

Upload
The user uploads an AmoCRM CSV export or a Facebook or Google Analytics JSON file.
Normalize
A Python service turns each source into one shared record format, close to the AmoCRM one.
Merge
Selected sources are merged into a single dataset sorted by date.
Report
An XLSX report is generated in the background. The app polls its status, then offers a preview and a download.

Under the hood

The engine is optional
If the Python service is unreachable, the backend falls back to processing the data itself, so the product degrades instead of failing.
One shared shape
Facebook and Google Analytics data are converted into the AmoCRM column format rather than a new neutral schema, because that export was the first and main integration.
Reports in the background
Requesting a report returns at once, and its status field is what the frontend polls. There is no job queue yet; it is a deliberate shortcut for this stage.
JSON for varied sources
Source data is stored as JSON columns because each source has its own shape. The cost is no database-level links between reports and sources.

Status

In progress. Uploading data, processing it, merging sources, sign-in and XLSX reports work today. The tracking script endpoint exists, but storing events and the attribution models (first touch, last touch, linear, time decay) are still planned.

← All projects