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.